匿名内部类的构造器重载问题
在think in Java 4th 的10.6节末尾提到“所以对于匿名类而言,实例初始化的实际效果就是构造器。当然它受到了限制--你不能重载实例初始化方法,所以你仅有一个这样的构造器。”但是我自己根据书中的例子重新写了一个具备重载功能的构建器,在jdk1.6下运行正确,想请问各位大侠这是何解,另外为何我将Destination d重新指向用重载的构建器生成的另一个内部类对象,编译器报错,谢谢赐教!
interface Destination {
String readLabel();
}
public class Parcel10{
public Destination
destination(final String dest){
return new Destination(){
private String label = dest;
public String readLabel(){ return label;}
{System.out.println("aaa");}
};
}
public Destination
destination(final String dest,final float price){
return new Destination(){
private int cost;
{
cost = Math.round(price);
if (cost > 100)
System.out.println("Over budget!");
}
private String label = dest;
public String readLabel(){ return label;}
};
}
public static void main(String[] args) {
Parcel10 p = new Parcel10();
Destination d = p.destination("Tasmania");
//编译器提示:已在main(java.lang.String[])中定义d
//Destination d = p.destination("Tasmania",101.395F);
Destination t = p.destination("Tasmania",101.395F);
}
}