在Java中,接口本身不能直接实例化,因为接口定义了一组方法,但没有实现它们。要使用接口,您需要创建一个实现了该接口的类,然后实例化那个类。不过,Java 8引入了Lambda表达式和函数式接口,允许您以简洁的方式实现接口的部分或全部方法。
通过实现接口的类实例化
public interface RequestHandler {
void onRequest(String receive, String toResponse);
}
public class RpcServer {
private RequestHandler handler = new RequestHandler() {
@Override
public void onRequest(String receive, String toResponse) {
System.out.println(receive);
System.out.println(toResponse);
}
};
public RequestHandler getHandler() {
return handler;
}
public void setHandler(RequestHandler handler) {
this.handler = handler;
}
public static void main(String[] args) {
RpcServer server = new RpcServer();
server.getHandler().onRequest("Hello World!", "Response from server");
}
}
使用匿名内部类实现接口
public interface Test1Interface {
int aa = 1;
void run();
}
public class Test1 {
private Test1Interface test1Interface = new Test1Interface() {
@Override
public void run() {
System.out.println("Running...");
}
};
public static void main(String[] args) {
Test1 test1 = new Test1();
test1.test1Interface.run();
}
}
使用Lambda表达式实现接口(Java 8及以后版本):
public interface ISay {
void sayHello();
}
public class Program {
public static void main(String[] args) {
ISay say = () -> System.out.println("Hello java!");
say.sayHello();
}
}
请注意,接口中定义的变量默认是`public static final`的,这意味着它们属于接口本身而不是接口的实例。您可以在实现接口的类中定义自己的变量和方法。