【发布时间】:2013-05-21 02:47:32
【问题描述】:
public SampleBehaviour otherway(final String st) {
return new SampleBehaviour() {
private String str = st;
@Override
public void print() {
System.out.println("val:"+val);
}
};
}
SampleBehaviour 是一个接口。
实现接口的类必须定义方法行为,接口中的一些变量有什么用?
为什么方法参数必须是final的?我没有得到这种类型的使用的一些实时应用程序?这背后的真实情况是什么?
如果有用,为什么 C++ 没有这样的东西?
【问题讨论】:
-
如果它有用,为什么我们 C++ 没有这样的东西?因为这不是语言的设计方式。
-
回到你的问题,匿名类不允许修改方法参数的引用,所以必须将它们标记为
final才能在匿名类中使用。 -
@LuiggiMendoza 为什么不应该修改?
-
一行:这是因为Java不支持词法闭包。语言设计者认为引入它们会带来更多的代码可读性问题而不是产生收益。
标签: java anonymous-inner-class