1. 解释
匿名内部类常用在接口的实现上,但是类也可以有匿名内部类.
public class Wrapping { private int i; public Wrapping(int x) { i = x; } public int value() { return i; } } public class Parcel8 { public Wrapping wrapping(int x) { return new Wrapping(x) { @Override public int value() { return 1; } }; } public static void main(String[] args) { Parcel8 wrapping = new Parcel8(); System.out.println(wrapping.wrapping(3).value());//结果是1 } }
Wrapping是一个类,但是Parcel8中的方法可以返回它的匿名内部类,并且重写了value方法,main方法执行后,输出和预期一样,是1.
2. 带参数的匿名内部类
public class Pracel10 { public Destination destination(String dest, float price) { return new Destination() { private int cost; { cost = Math.round(price); if(cost > 100) { System.out.println("Over budget!"); } } private String label = dest; @Override public String readLabel() { // TODO dest-generated method stub return label; } }; } public static void main(String[] args) { Pracel10 p = new Pracel10(); Destination d = p.destination("Test", 101.3f); System.out.println(d.readLabel()); } }
destination方法中的匿名内部类,定义了cost变量,然后通过构造块初始化cost值,需要注意的是,destination方法的参数必须是final类型的,如果中途dest和price参数有变化,会报编译错误.
匿名内部类的缺点就是初始化值只有一个构造块,因为没有名称,所以不能重载构造方法,而且匿名内部类只能继承一个类,无法实现其他接口.
标签:return,内部,int,Wrapping,匿名,cost,public From: https://www.cnblogs.com/lishuaiqi/p/17092592.html