匿名类的创建方法:
new 接口名(){
实现方法
}.方法名();
注意,这里new的是一个接口,不是对类。通过这个方法,相当于创建了一个接口的实现类,但这个类是匿名看不到的。所以称为匿名类。
实例代码如下:
//创建一个接口
interface Service{
public abstract void show();
}
class Test{
public static void main(String[] args){
//注意,匿名类是直接new 接口名(){这里跟实现方法}.方法名();因为没有对象的引用,所以执行一次后很快被GC回收
new Service(){
public void show(){
System.out.println("这是个匿名类");
}
}.show();
}
}
这是个匿名类的对象
//创建一个接口
interface Service{
public abstract void show();
}
class Test{
public static void main(String[] args){
//注意,匿名类是直接new 接口名(){这里跟实现方法}.方法名();因为没有对象的引用,所以执行一次后很快被GC回收
//这里的匿名类有被引用,所以直接main方法结束,这个匿名类才会被GC回收
Service service = new Service(){
public void show(){
System.out.println("这是个匿名类");
}
};
service.show();
}
}
执行结果:
这是个匿名类
==================================================================================================================================
有一个跟匿名类很象的东西叫匿名对象,它与匿名类的区分在于:
匿名类是直接new 接口名实例化的对象。
匿名对象是直接new 类名实例化的对象。
匿名对象实例:
//创建一个接口
interface Service{
public abstract void show();
}
//创建一个类
class Demo{
public void show(){
System.out.println("这是个匿名对象,不是匿名类");
}
}
class Test{
public static void main(String[] args){
//因为直接new 类名,所以叫匿名对象
new Demo().show();
}
}
结果:
这是个匿名对象,不是匿名类