将“this”传递给新对象的内联重写方法的正确方法是啥? [复制]
Posted
技术标签:
【中文标题】将“this”传递给新对象的内联重写方法的正确方法是啥? [复制]【英文标题】:What is the proper way to pass 'this' to an inline overridden method of a new object? [duplicate]将“this”传递给新对象的内联重写方法的正确方法是什么? [复制] 【发布时间】:2013-11-05 15:04:13 【问题描述】:我使用了一个局部变量来存储this
,以便使其可以在内联覆盖中访问,但对此并不满意。有没有更优雅的方式来做到这一点?
public class Tree extends Plant
public Tree()
timeline = new Timeline(new KeyFrame(Duration.millis(40), new EventHandler<ActionEvent>()
final Plant tree = this; // <---- here
@Override
public void handle(ActionEvent actionEvent)
tree.setA(5); // <---- and here
));
timeline.setCycleCount(Timeline.INDEFINITE);
【问题讨论】:
使用Tree.this
。
【参考方案1】:
您应该使用Tree.this
。由于您正在尝试访问另一个类(即EventHandler
)中有关Tree
对象的信息,因此需要对this
进行限定,以便编译器知道您在说什么。
【讨论】:
以上是关于将“this”传递给新对象的内联重写方法的正确方法是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何将 DataTable.Select() 结果传递给新的 DataTable?