當前位置:首頁 » 編程語言 » java調用介面的方法

java調用介面的方法

發布時間: 2022-06-06 11:54:08

java類調用介面中的方法

你要理解介面的作用。介面提供了一種規范,就像現實中,USB介面是一種介面一樣,但是介面一定要有一個具體的實現,比如你的U盤,充電寶等等。相同的介面可以「保證」正常的調用,而不用知道實現這個介面的類具體是個什麼東西。當你把USB介面的設備插在U口上時,其實你並不太關心這些設備內部到底有什麼不同。
面向對象提出介面的概念,就是為了達到這個目的。如果有三個類,都實現了某一介面,它你的代碼調用它們的時候,你不用關心這三個類都有哪些不同,你只關心它們相同的部分,就是介面所「規定」的那些方法,它們肯定要實現的,但具體的實現一定是在各自的類定義里。所以你在看代碼的時候,要看介面方法的具體實現,要在實現介面的類里去看,而不是看介面本身。不知道這樣說,你清楚了沒有。

Ⅱ java如何調用介面方式

計算機語言分類有很多,如C、C++、C#、Java、Php、Python等等,她們有各自的特性及擅長的領域,但她們各自又不是全能的。在一個稍微大型一點的項目都會用到多種語言共同完成,那麼這些編程語言如何進行通信呢。什麼意思呢,就是比如說我Java寫的一個方法,其他編程語言要怎麼去調用呢?這就是本文要探討的問題了。
一般來說,方法層面的編程語言通信用的是網路介面形式,只暴露出形參和結果供別人調用。介面一般分為介面定義者和介面調用者,定義者可以規定接收參數的類型及返回形式,而介面定義者則只能完全按照介面定義者規定的參數進行訪問。就叫是我們所說的webService(網路服務)。
以前的做法是利用XML作介面格式定義,然後通過Http做通訊和請求,如大名鼎鼎的SOAP,其實現在也是的,只不過現在流行RestFul風格的Rest介面形式,但用的還是XML+HTTP,那這兩者有啥區別呢?最大的區別就是SOAP返回的主要是XML格式,有時還需要附帶一些輔助文件,而Rest則還可以返回JSON類型的字元串,減少了很多繁亂的XML標簽。

Ⅲ java寫的介面怎麼調用

訪問形式如下例子:

//介面
publicinterfaceLoggerUtil{

//得到Logger,用於列印日誌
Loggerlogger=Logger.getLogger(LoggerUtil.class);
}

@RequestMapping("/delete.do")
publicStringdelete(Studentsstudents){

try{
stuService.delete(students);
}catch(Exceptione){

//介面的調用方式(直接調用)
LoggerUtil.logger.error(e.getMessage());
}
return"redirect:selectAll.do";
}

Ⅳ java如何調用webservice介面

Java通過WSDL文件來調用webservice:

注意,以下的代碼並沒有經過真正的測試,只是說明這些情況,不同版本的Axis相差很大,大家最好以apache網站上的例子為准,這里僅僅用於說明其基本用法。
1,直接AXIS調用遠程的web service
這種方法比較適合那些高手,他們能直接看懂XML格式的WSDL文件,我自己是看不懂的,尤其我不是專門搞這行的,即使一段時間看懂,後來也就忘記了。直接調用模式如下:
import java.util.Date;
import java.text.DateFormat;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
import java.lang.Integer;
import javax.xml.rpc.ParameterMode;

public class caClient {

public static void main(String[] args) {

try {
String endpoint = "http://localhost:8080/ca3/services/caSynrochnized?wsdl";
//直接引用遠程的wsdl文件
//以下都是套路
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(endpoint);
call.setOperationName("addUser");//WSDL裡面描述的介面名稱
call.addParameter("userName", org.apache.axis.encoding.XMLType.XSD_DATE,
javax.xml.rpc.ParameterMode.IN);//介面的參數
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//設置返回類型

String temp = "測試人員";
String result = (String)call.invoke(new Object[]{temp});
//給方法傳遞參數,並且調用方法
System.out.println("result is "+result);
}
catch (Exception e) {
System.err.println(e.toString());
}
}
}
2,直接SOAP調用遠程的webservice
這種模式我從來沒有見過,也沒有試過,但是網路上有人貼出來,我也轉過來
import org.apache.soap.util.xml.*;
import org.apache.soap.*;
import org.apache.soap.rpc.*;

import java.io.*;
import java.net.*;
import java.util.Vector;

public class caService{
public static String getService(String user) {
URL url = null;
try {
url=new URL("http://192.168.0.100:8080/ca3/services/caSynrochnized");
} catch (MalformedURLException mue) {
return mue.getMessage();
}
// This is the main SOAP object
Call soapCall = new Call();
// Use SOAP encoding
soapCall.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
// This is the remote object we're asking for the price
soapCall.setTargetObjectURI("urn:xmethods-caSynrochnized");
// This is the name of the method on the above object
soapCall.setMethodName("getUser");
// We need to send the ISBN number as an input parameter to the method
Vector soapParams = new Vector();

// name, type, value, encoding style
Parameter isbnParam = new Parameter("userName", String.class, user, null);
soapParams.addElement(isbnParam);
soapCall.setParams(soapParams);
try {
// Invoke the remote method on the object
Response soapResponse = soapCall.invoke(url,"");
// Check to see if there is an error, return "N/A"
if (soapResponse.generatedFault()) {
Fault fault = soapResponse.getFault();
String f = fault.getFaultString();
return f;
} else {
// read result
Parameter soapResult = soapResponse.getReturnValue ();
// get a string from the result
return soapResult.getValue().toString();
}
} catch (SOAPException se) {
return se.getMessage();
}
}
}
3,使用wsdl2java把WSDL文件轉成本地類,然後像本地類一樣使用,即可。
這是像我這種懶人最喜歡的方式,仍然以前面的global weather report為例。
首先 java org.apache.axis.wsdl.WSDL2Java http://www.webservicex.net/globalweather.asmx.WSDL
原本的網址是http://www.webservicex.net/globalweather.asmx?WSDL,中間個各問號,但是Linux下面它不能解析,所以去掉問號,改為點號。
那麼就會出現4個文件:
GlobalWeather.java GlobalWeatherLocator.java GlobalWeatherSoap.java GlobalWeatherSoapStub.java
其中GlobalWeatherSoap.java是我們最為關心的介面文件,如果你對RMI等SOAP實現的具體細節不感興趣,那麼你只需要看介面文件即可,在使用的時候,引入這個介面即可,就好像使用本地類一樣。

Ⅳ java怎麼調用別人給的介面

1、調用WebService,對方給出WebService地址,可以用Axis生成對WebService的調用代碼進行調用
2、對方提供介面文檔和傳輸方式,根據介面文檔調用。
Java介面是一系列方法的聲明,是一些方法特徵的集合,一個介面只有方法的特徵沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行為(功能)。
兩種含義:一,Java介面,Java語言中存在的結構,有特定的語法和結構;二,一個類所具有的方法的特徵集合,是一種邏輯上的抽象。前者叫做「Java介面」,後者叫做「介面」。

Ⅵ java 介面怎麼用應該怎麼實現

java語言不支持一個類有多個直接的父類(多繼承),但可以實現(implements)多個介面,間接的實現了多繼承
用法public class test implements 介面名稱
當類實現了某個Java介面時,它必須實現介面中的所有抽象方法,否則這個類必須聲明為抽象的

比較抽象類與介面
1, 抽象類與介面都位於繼承樹的上層
相同點
1, 代表系統的抽象層,當一個系統使用一顆繼承樹上的類時,應該盡量把引用變數聲明為繼承樹的上層抽象類型,這樣可以提高兩個系統之間的送耦合
2, 都不能被實例化
3, 都包含抽象方法,這些抽象方法用於描述系統能提供哪些服務,但不提供具體的實現
不同點:
1, 在抽象類中可以為部分方法提供默認的實現,從而避免在子類中重復實現它們,這是抽象類的優勢,但這一優勢限制了多繼承,而介面中只能包含抽象方法.由於在抽象類中允許加入具體方法,因此擴展抽象類的功能,即向抽象類中添加具體方法,不會對它的子類造成影響,而對於介面,一旦介面被公布,就必須非常穩定,因為隨意在介面中添加抽象方法,會影響到所有的實現類,這些實現類要麼實現新增的抽象方法,要麼聲明為抽象類
2, 一個類只能繼承一個直接的父類,這個父類可能是抽象類,但一個類可以實現多個介面,這是介面的優勢,但這一優勢是以不允許為任何方法提供實現作為代價的三, 為什麼Java語言不允許多重繼承呢?當子類覆蓋父類的實例方法或隱藏父類的成員變數及靜態方法時,Java虛擬機採用不同的綁定規則,假如還允許一個類有多個直接的父類,那麼會使綁定規則更加復雜,
因此,為了簡化系統結構設計和動態綁定機制,Java語言禁止多重繼承.而介面中只有抽象方法,沒有實例變數和靜態方法,只有介面的實現類才會實現介面的抽象方法(介面中的抽象方法是通過類來實現的),因此,一個類即使有多個介面,也不會增加Java虛擬機進行動態綁定的復雜度.因為Java虛擬機永遠不會把方法與介面綁定,而只會把方法與它的實現類綁定.四, 使用介面和抽象類的總體原則:
1, 用介面作為系統與外界交互的窗口站在外界使用者(另一個系統)的角度,介面向使用者承諾系統能提供哪些服務,站在系統本身的角度,介面制定系統必須實現哪些服務,介面是系統中最高層次的抽象類型.通過介面交互可以提高兩個系統之間的送耦合系統A通過系統B進行交互,是指系統A訪問系統B時,把引用變數聲明為系統B中的介面類型,該引用變數引用系統B中介面的實現類的實例。
public interface B
{
}
public class C implements B
{
}
public class A
{
}
B a = new C();
2, Java介面本身必須非常穩定,Java介面一旦制定,就不允許隨遇更加,否則對外面使用者及系統本身造成影響
3, 用抽象類來定製系統中的擴展點
抽象類來完成部分實現,還要一些功能通過它的子類來實現

Ⅶ java 介面調用介面方法 實現的是哪個方法 是實現介面的類的方法嗎 如果實現的類有多個呢

調用的不是介面也不是類的方法,而是對象的方法
舉個例子List
a
=
new
ArrayList();
a.add(...);//調用的不是List介面的方法,也不是ArrayList類的方法,
而是new
ArrayList()所得到的對象的方法。而這個對象是ArrayList這個類的一個實例

Ⅷ java 怎麼調用實現介面的方法

介面實現基本流程是1.定義一個介面,裡麵包含一些未實現的方法;2.定義一個類實現介面,實現介面中的所有未實現方法

Ⅸ java如何調用介面

public interface PetInterface {

public abstract void pet();
}

比如說你的Fruit類實現PetInterface介面寫法為:
class Fruit implemented PetInterface{
public void pet(){

}
public void hitChild(){

System.out.println("水果:");

}

Ⅹ java遠程調用介面的原理和範例,謝謝

Java 遠程處理
Java遠程方法調用(RMI)提供了Java程序語言的遠程通訊功能,這種特性使客戶機上運行的程序可以調用遠程伺服器上的對象,使Java編程人員能夠在網路環境中分布操作。
創建一個簡單的Java分布式遠程方法調用程序可以按以下幾個步驟操作,

一、定義遠程介面:
在 Java 中,遠程對象是實現遠程介面的類的實例, 遠程介面聲明每個要遠程調用的方法。在需要創建一個遠程對象的時候,我們通過傳遞一個介面來隱藏基層的實施細節,客戶通過介面句柄發送消息即可。
遠程介面具有如下特點:
1) 遠程介面必須為public屬性。如果不這樣,除非客戶端與遠程介面在同一個包內,否則 當試圖裝入實現該遠程介面的遠程對象時,調用會得到錯誤結果。
2) 遠程介面必須擴展介面java.rmi.Remote。
3) 除與應用程序本身特定的例外之外,遠程介面中的每個方法都必須在自己的throws從句中 聲明java.rmi.RemoteException。(或 RemoteException 的父類)。
4) 作為參數或返回值傳遞的一個遠程對象(不管是直接,還是本地對象中嵌入)必須聲明為遠 程介面,而不應聲明為實施類。

下面是遠程介面的定義

[java] view plain
package test;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.math.BigInteger;

public interface Fib extends Remote {
public int getFib(int n) throws RemoteException;
// public BigInteger getFib(BigInteger n) throws RemoteException;
}

二、實現遠程介面:
遠程對象實現類必須擴展遠程對象java.rmi.UnicastRemoteObject類,並實現所定義的遠程介面。遠程對象的實現類中包含實現每個遠程介面所指定的遠程方法的代碼。這個類也可以含有附加的方法,但客戶只能使用遠程介面中的方法。因為客戶是指向介面的一個句柄,而不是它的哪個類。必須為遠程對象定義構造函數,即使只准備定義一個默認構造函數,用它調用基礎類構造函數。因為基礎類構造函數可能會拋出 java.rmi.RemoteException,所以即使別無它用必須拋出java.rmi.RemoteException例外。
以下是遠程對象實現類的聲明:

[java] view plain
package test;
import java.math.BigInteger;
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;

public class FibImp extends UnicastRemoteObject implements Fib {
public FibImp() throws RemoteException {
super();
}

public int getFib(int n) throws RemoteException {
return n+2;
}

}

三、編寫伺服器類:
包含 main 方法的類可以是實現類自身,也可以完全是另一個類。下面通過RmiSampleServer 來創建一個遠程對象的實例,並通過java.rmi.registry.LocateRegistry類的createRegistry 方法從指定埠號啟動注冊服務程序,也可以通過執行 rmiregistry 命令啟動注冊服務程序,注冊服務程序的預設運行埠為 1099。必須將遠程對象名字綁定到對遠程對象的引用上: Naming.rebind("//localhost:8808/SAMPLE-SERVER" , Server);
以下是伺服器類的聲明:

[java] view plain
package test;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
public class FibonacciServer {
/**
* @param args
*/
public static void main(String[] args) {
try {
LocateRegistry.createRegistry(8804);
FibImp f = new FibImp();

// 注冊到 registry 中
Naming.rebind("//localhost:8804/SAMPLE-SERVER", f);
System.out.println("fib server ready");

} catch (RemoteException re) {
System.out.println("Exception in FibonacciImpl.main: " + re);
} catch (MalformedURLException e) {
System.out.println("MalformedURLException " + e);
}
}
}

四、編寫使用遠程服務的客戶機類:
客戶機類的主要功能有兩個,一是通過Naming.lookup方法來構造注冊服務程序 stub 程序實例,二是調用伺服器遠程對象上的遠程方法。
以下是客戶端類的聲明:

[java] view plain
package testClient;

import test.Fib;
import java.math.BigInteger;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
public class FibClient {
/**
* @param args
*/
public static void main(String[] args) {
String url = "//localhost:8804/SAMPLE-SERVER";
try {

Fib calc = (Fib) Naming.lookup(url);
for (int i = 0; i < 10; ++i) {
int f = calc.getFib(i);
System.out.println(f);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
} catch (NotBoundException e) {
e.printStackTrace();
}
}
}

熱點內容
安卓由哪個公司提供 發布:2024-04-30 12:27:03 瀏覽:415
伺服器2個cpu的內存如何安裝 發布:2024-04-30 12:19:02 瀏覽:328
如何搭建outlook伺服器 發布:2024-04-30 10:46:50 瀏覽:637
美圖忘記密碼手機如何刷機 發布:2024-04-30 10:45:43 瀏覽:191
sql字元設置 發布:2024-04-30 10:39:03 瀏覽:307
androidram 發布:2024-04-30 10:36:06 瀏覽:281
購買的新車有哪些基本配置 發布:2024-04-30 10:27:32 瀏覽:324
遠程訪問攝像頭 發布:2024-04-30 10:10:57 瀏覽:74
貼吧網站源碼 發布:2024-04-30 10:10:42 瀏覽:252
飢荒為什麼伺服器模組不能用 發布:2024-04-30 10:10:41 瀏覽:552