如何调用java
调用 Java 方法的基本方式
在 Java 中调用方法需要明确方法所属的类或对象,以及方法的参数。以下是几种常见的调用方式:
实例方法调用 通过对象实例调用非静态方法:
ClassName obj = new ClassName();
obj.methodName(arg1, arg2);
静态方法调用 通过类名直接调用静态方法:
ClassName.staticMethodName(arg1, arg2);
构造方法调用
使用 new 关键字调用构造方法创建对象:
ClassName obj = new ClassName(arg1, arg2);
通过反射调用 Java 方法
反射机制允许在运行时动态调用方法:
获取类对象并调用方法:
Class<?> clazz = Class.forName("com.example.ClassName");
Object instance = clazz.newInstance();
Method method = clazz.getMethod("methodName", parameterTypes);
method.invoke(instance, args);
调用静态方法时无需实例:
Method staticMethod = clazz.getMethod("staticMethodName", parameterTypes);
staticMethod.invoke(null, args);
跨语言调用 Java
JNI (Java Native Interface) 通过 C/C++ 调用 Java 方法:
- 编写带有
native方法的 Java 类 - 生成头文件 (
javah) - 实现 C/C++ 本地方法
- 加载动态库并调用
示例 Java 端:
public class NativeDemo {
public native void callJavaMethod();
static { System.loadLibrary("nativeLib"); }
}
JNA (Java Native Access) 简化 JNI 的第三方库:
public interface CLibrary extends Library {
CLibrary INSTANCE = Native.load("c", CLibrary.class);
void nativeMethod();
}
远程调用 Java 方法
RMI (Remote Method Invocation) 实现远程对象调用:
- 定义远程接口(继承
Remote) - 实现远程对象
- 注册到 RMI 注册表
- 客户端查找并调用
服务端示例:
public interface RemoteService extends Remote {
String remoteMethod() throws RemoteException;
}
public class RemoteImpl extends UnicastRemoteObject implements RemoteService {
public String remoteMethod() { return "Result"; }
}
// 注册
Registry registry = LocateRegistry.createRegistry(1099);
registry.bind("Service", new RemoteImpl());
Web Service 通过 SOAP/REST 调用:
// 使用 JAX-WS 客户端
URL wsdlURL = new URL("http://example.com/service?wsdl");
QName qname = new QName("http://example.com", "Service");
Service service = Service.create(wsdlURL, qname);
ServiceInterface port = service.getPort(ServiceInterface.class);
String result = port.webMethod();
脚本引擎调用 Java
通过 ScriptEngineManager 调用:

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");
engine.eval("var result = Java.type('com.example.ClassName').staticMethod();");






