理解Java中的语法
我可以在网上的几个例子中看到一种新的语法,下面是一个例子:
Accumulator<Integer> sum = new Accumulator<Integer>(){
public Integer accumulate(Integer t1, Integer t2) {
return t1+t2;
}
};
一般来说,当一个人在创建一个类的实例后编写{ a method }
时,这意味着什么?这是某种古老的语法吗
谢谢
你可以在下面搜索框中键入要查询的问题!
我可以在网上的几个例子中看到一种新的语法,下面是一个例子:
Accumulator<Integer> sum = new Accumulator<Integer>(){
public Integer accumulate(Integer t1, Integer t2) {
return t1+t2;
}
};
一般来说,当一个人在创建一个类的实例后编写{ a method }
时,这意味着什么?这是某种古老的语法吗
谢谢
# 1 楼答案
不,这是一个匿名的内部类。它具有其类型的接口或类的签名,但可以重写公共方法
# 2 楼答案
这称为匿名内部类,即没有名称的类,因此可以与其唯一的一个实例一起创建。当您需要实现某些接口并且只需要一个此类实现实例时,这是减少项目中可见类数量的方法
但不要滥用此功能。只有在实现非常简单(1-2行)时才使用它
# 3 楼答案
这是一个匿名类声明的示例
Java Language Specification的Section 15.9.5讨论了这些类型的声明
# 4 楼答案
这是一个常用的匿名内部类
“匿名类本质上是一个没有名字的本地类。”
# 5 楼答案
你正在创建一个匿名的内部类
定义
Accumulator
的匿名实现。然后,将对这个匿名类的引用分配给sum
可以将其视为同时定义和分配实现的便捷方式。这是一个syntactic sugar
# 6 楼答案
它要么使用重载方法创建匿名子类,要么创建匿名接口实现(取决于Accululator是类还是接口)