【问题标题】:Java adding constants to dynamicly added codeJava将常量添加到动态添加的代码中
【发布时间】:2014-10-25 01:23:17
【问题描述】:

是否可以将常量添加到添加到对象的代码中?因此,如果我的 psudo 代码在下面运行,那么有问题的对象获得焦点,当时 ZZZ 中的值将被打印出来?

public void addStupidListener(JTextField textField, String ZZZ) {
    textField.addFocusListener(new FocusListener() {

        @Override
        public void focusGained(FocusEvent e) {
            System.out.println("selected" + ZZZ);
        }

        @Override
        public void focusLost(FocusEvent e) {
            System.out.println("de-selected" + ZZZ);
        }
    });
}

【问题讨论】:

  • 编译和运行这段代码会发生什么?
  • 所以为了更通用,你问是否可以在匿名类中使用堆栈变量?
  • 我觉得我的代码真的很愚蠢
  • 我认为如果你不做“ZZZ”Stringfinal你会得到一个编译器错误
  • 弄清楚:如果变量是 final 或有效 final,eclipse 允许它

标签: java focuslistener


【解决方案1】:

通常,您可以在匿名类中捕获堆栈变量。这是一个例子。我认为你正在尝试做的事情会奏效。

public class AnonymousTest {


    public static void main(String[] args){

        Object obj = someObject("Hey world!");
        System.out.println(obj);
    }

    public static Object someObject(String str){
        return new Object(){
            public String toString(){
                return super.toString()+str;
            }
        };
    }
}

输出:stackoverflow.AnonymousTest$1@7f31245a嘿世界!

【讨论】:

    【解决方案2】:

    不,这行不通。您混合了初始化和执行代码。您放置了一个侦听器以供将来执行,它在初始化时如何获取 String 。不要做这种事,很烦人。

    【讨论】:

    • 我认为它不会像 writen 那样工作。我希望有一种编码方法。但是它确实有效。
    猜你喜欢
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多