匿名类为内部类的一种,是指在类内部new一个抽象类或者接口。
声明和构造匿名内部类的一般格式如下:
new ClassOrInterfaceName(){ //抽象类或接口
/*类体*/ }
应该注意的是,运行一下代码,发现heros中的所有匿名类为一个类型,而checker2和checker3为另一个类型
import java.util.ArrayList;
import java.util.Random;
public class RandomTest {
public static void main(String[] args){
Random r = new Random();
ArrayList heros = new ArrayList();
ArrayList heros2 = new ArrayList();
for (int i=0;i<=10;i++){
heros2.add(new Hero("hero "+i,r.nextInt(1000),r.nextInt(100)));
heros.add(new HeroCheck() {
@Override
public boolean test(Hero h) {
return true;
}
});
}
HeroCheck checker = new HeroCheck() {
@Override
public boolean test(Hero h) {
return (h.hp>100&&h.damage<=50);
}
};
HeroCheck checker2 = new HeroCheck() {
@Override
public boolean test(Hero h) {
return (h.hp>100&&h.damage<=50);
}
};
System.out.println(checker.getClass());
System.out.println(checker2.getClass());
System.out.println(heros.get(0) == heros.get(1));
System.out.println(heros.get(0).getClass() == checker.getClass());
System.out.println(checker2.getClass() == checker.getClass());
}