首先确定,java中接口不能直接实例化对象,需要一个对应的实现类,去向上转。
如有一个接口
public interface Hello{
public void getHello;
}
创建接口实例的已知方式有:
1.编写实现类
public class HelloSon{
@override
public void getHello{
System.out.print("Hello");
Hello hello = new HelloSon();
1.匿名内部类:
new Hello(){
3.反射中的Proxy动态代理模式.newProxyInstance方法
InvocationHandler handler = new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println(method);
if (method.getName().equals("morning")) {
System.out.println("Good morning, " + args[0]);
return null;
};
Hello hello = (Hello) Proxy.newProxyInstance(
Hello.class.getClassLoader(), // 传入ClassLoader
new Class[] { Hello.class }, // 传入要实现的接口
handler); // 传入处理调用方法的InvocationHandler
hello.getHello();
Sign in to make a reply
王羲之666666
首先确定,java中接口不能直接实例化对象,需要一个对应的实现类,去向上转。
如有一个接口
public interface Hello{
public void getHello;
}
创建接口实例的已知方式有:
1.编写实现类
public class HelloSon{
@override
public void getHello{
System.out.print("Hello");
}
}
Hello hello = new HelloSon();
1.匿名内部类:
new Hello(){
@override
public void getHello{
System.out.print("Hello");
}
}
3.反射中的Proxy动态代理模式.newProxyInstance方法
InvocationHandler handler = new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println(method);
if (method.getName().equals("morning")) {
System.out.println("Good morning, " + args[0]);
}
return null;
}
};
Hello hello = (Hello) Proxy.newProxyInstance(
Hello.class.getClassLoader(), // 传入ClassLoader
new Class[] { Hello.class }, // 传入要实现的接口
handler); // 传入处理调用方法的InvocationHandler
hello.getHello();