将“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”传递给新对象的内联重写方法的正确方法是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

JS中函数的调用和this的值

将内联双精度数组作为方法参数传递

如何将 HttpContext 传递给新线程 c#

如何将 DataTable.Select() 结果传递给新的 DataTable?

从将传递 jslint 的同一对象中的函数调用另一个函数的正确方法是啥?

如何 curry jQuery 方法——哪个`this`值将传递 jQuery 对象?