当前位置: 代码迷 >> J2SE >> 关于Java匿名内部类,该怎么解决
  详细解决方案

关于Java匿名内部类,该怎么解决

热度:38   发布时间:2016-04-23 20:03:51.0
关于Java匿名内部类
接口不是不能进行实例化吗?为什么在匿名内部类定义的时候可以呢?
interface Product
{
void test();
}
class A implements Product
{
public void test()
{
System.out.println("kkk");
}
}
public class Test
{
public static void main(String args[])
{
Product p=new Product(){
public void test()
{
System.out.println("这是什么玩意。");
}
};
}
}

------解决思路----------------------
匿名类实际上就是一个类实现了接口,不是实例化了接口,在哪都可以
------解决思路----------------------
匿名内部类相当于定义一个类实现了这个接口,再new了一个实现了该接口的对象。
------解决思路----------------------
不用匿名内部类
interface A{
public void printInfo();
}
class B implements A{
public void printInfo(){
System.out.println("Hello World!!!");
}
}
class X{
public void fun1(){
this.fun2(new B());
}
public void fun2(A a){
a.printInfo();
}
}
public class Test{
public static void main(String args[]){
new X().fun1();
}
}

匿名内部类
interface A{
public void printInfo();
}
class X{
public void fun1(){
this.fun2(new A(){
public void printInfo(){
System.out.println("Hello World!!!");
}//内部类
});
}
public void fun2(A a){
a.printInfo();
}
}
public class Test{
public static void main(String args[]){
new X().fun1();
}
}
  相关解决方案