Java匿名类简单用法
- 首先需要定义一个接口或者一个类
interface Out {
public abstract void output();
}
- 然后调用这个接口/类
public class Try {
public static void main(String[] args) {
Out out = new Out() {//注意:本来接口是不能这样直接实例化的
@Override
public void output() {//重写了原接口中的函数
System.out.println("test Anonymous class.");
}
};//这里也要注意要带分号,这个便是匿名类
//所以说看到这种花括号后面带分号的一般就是匿名类
out.output();
}
}
//输出:test Anonymous.
//生成了Try.class和Try$1.class
//如果有多个匿名类的话就还会生成Try$2.class,...,Try$n.class
- 总体代码
interface Out {
public abstract void output();
}
public class Try {
public static void main(String[] args) {
Out out = new Out() {
@Override
public void output() {
System.out.println("test Anonymous.");
}
};
out.output();
}
}
- 等价于
interface Out {
public abstract void output();
}
class Output implements Out {
public void output() {
System.out.println("test Anonymous.");
}
}
public class Try {
public static void main(String[] args) {
Out out = new Output();//接口回调
//Output out = new Output();//和上一行代码等价
out.output();
}
}
可以看到,相较于代码4, 代码3中没有直接定义一个实现接口的类,所以就是匿名类