相关疑难解决方法(0)

为什么在匿名类中只能访问最终变量?

  1. a只能在这里决赛.为什么?如何aonClick()不将其保留为私有成员的情况下重新分配方法?

    private void f(Button b, final int a){
        b.addClickHandler(new ClickHandler() {
    
            @Override
            public void onClick(ClickEvent event) {
                int b = a*5;
    
            }
        });
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如何5 * a点击它返回?我的意思是,

    private void f(Button b, final int a){
        b.addClickHandler(new ClickHandler() {
    
            @Override
            public void onClick(ClickEvent event) {
                 int b = a*5;
                 return b; // but return type is void 
            }
        });
    }
    
    Run Code Online (Sandbox Code Playgroud)

java event-handling anonymous-class

341
推荐指数
7
解决办法
11万
查看次数

为什么非最终的"局部"变量不能在内部类中使用,而是封闭类的非最终字段可以?

Stack Overflow上有一些关于编译器错误的主题,Cannot refer to a non-final variable message inside an inner class defined in a different method解决方案是"将其声明为final并且你已经完成了",但是有了这个理论问题,我想检查一下这个代码无法编译的逻辑原因:

private void updateStatus(String message) {
    Runnable doUpdateStatus = new Runnable() {
         public void run() {
             /* do something with message */
         }
    }
    /* do something with doUpdateStatus, like SwingUtilities.invokeLater() */
}
Run Code Online (Sandbox Code Playgroud)

(解决方案:宣布message为最终),而这一个做:

private String enclosingClassField;
private void updateStatus() {
    Runnable doUpdateStatus = new Runnable() {
         public void run() {
             /* do something with enclosingClassField */
         } …
Run Code Online (Sandbox Code Playgroud)

java

35
推荐指数
3
解决办法
3万
查看次数

如何从匿名类中访问封闭的类实例变量?

如何instance variables从匿名类的方法中访问?

class Tester extends JFrame {

   private JButton button;
   private JLabel label;
   //..some more

   public Tester() {
        function(); // CALL FUNCTION
   }

   public void function() {
      Runnable r = new Runnable() {
         @Override
         public void run() {
            // How do I access button and label from here ?
         }
      };
      new Thread(r).start();
   }
}
Run Code Online (Sandbox Code Playgroud)

java anonymous-inner-class anonymous-class

2
推荐指数
1
解决办法
3675
查看次数