匿名内部类使用比较多一种情况是:当一个方法传递一个接口类型的参数时。这里定义一个接口:
package com.pht.inner;
public interface Person {
public void setSkin();
}
再定义一个类,且有一个传递Person类型的参数的方法
package com.pht.inner;
public class Nvwa {
public void create(Person p){
p.setSkin();
}
}
最后再来一个测试main:
package com.pht.inner;
public class NvwaMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
Nvwa nvwa=new Nvwa();
nvwa.create(new Person() {
@Override
public void setSkin() {
// TODO Auto-generated method stub
System.out.println("女娲造了一个黄皮肤的东亚人");
}
});
}
}
看到没,在main方法中,我们在传参的时候实现了Person接口,我们知道接口是不能实例化的,那么这里的实现接口的类是匿名的。这就是匿名内部类的电讯应用。最后,我们换一个更一般的匿名内部类:
package inner;
interface inter{
public void f1();
}
public class UnameInnerClassTest {
public UnameInnerClassTest() {
// TODO Auto-generated constructor stub
new inter(){
public void f1(){
System.out.println("匿名内部类");
}
};
}
public static void main(String[] args) {
UnameInnerClassTest a=new UnameInnerClassTest();
}
}