Azi*_*s98 5 java this inner-classes new-operator
我在写这段代码:
public class GuiSelectionList<T> extends GuiList<SelectableItem> {
...
public void add(T element) {
list.add(this.new SelectableItem(element));
}
public class SelectableItem {
public T data;
public boolean selected;
public SelectableItem(T data) {
this.data = data;
}
}
}
Run Code Online (Sandbox Code Playgroud)
而且我发现我的IDE不会抱怨我是否使用:
list.add(this.new SelectableItem(element));
Run Code Online (Sandbox Code Playgroud)
要么
list.add(new SelectableItem(element));
Run Code Online (Sandbox Code Playgroud)
我的问题是:都是同一件事吗?
是的,它们是相同的。
something.new InnerClass(...)是创建内部类实例的最通用语法,其中something的表达式是对外部类实例的引用(请记住,每个内部类实例都具有对外部类实例的引用)。
当something.被省略,即new InnerClass(...),你恰好是在外部类的一个实例方法,那么它隐含的手段this.new InnerClass(...),随便怎么样,当你写的实例变量或方法调用,而无需通过点明确地访问它,它意味着this.(someInstanceVariable隐含手段this.someInstanceVariable)。
| 归档时间: |
|
| 查看次数: |
2245 次 |
| 最近记录: |