Java向动态添加的代码中添加常量
是否可以将常量添加到添加到对象的代码中?因此,如果我的psudo代码在下面的何处运行,那么所讨论的对象获得了焦点,此时ZZZ中的值会被打印出来吗Java向动态添加的代码中添加常量,java,focuslistener,Java,Focuslistener,是否可以将常量添加到添加到对象的代码中?因此,如果我的psudo代码在下面的何处运行,那么所讨论的对象获得了焦点,此时ZZZ中的值会被打印出来吗 public void addStupidListener(JTextField textField, String ZZZ) { textField.addFocusListener(new FocusListener() { @Override public void focusGained(FocusEv
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);
}
});
}
不,这不是工作。您混合了初始化和执行代码。您为将来的执行放置了一个侦听器,它在初始化字符串时如何接受该字符串。不要做这样的事情,这很烦人。通常,您可以在匿名类中捕获堆栈变量。这里有一个例子。我想你想做的会奏效的
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@7f31245aHey世界 当你编译并运行这段代码时会发生什么?为了让它更通用,你是在问你是否可以在匿名类中使用堆栈变量?我觉得我的代码在写的时候工作真的很愚蠢。我想如果你不让ZZZ字符串最终显示出来,你会得到一个编译器错误。如果变量是最终的,eclipse允许这样做。我认为它不会像写的那样工作。我希望有办法把它编码。然而,它确实有效。