据我了解,以下代码应已将true打印为输出。 但是,当我运行此代码时,它正在打印false。 来自Anonymous Classes 15.9.5. 的Java文档: An anonymous class is always implicitly final public class Test { public static void main(String args[]) { Object o = new Object() { }; System.out.println("Annonymous class is …

2020年10月31日 0条评论 53点热度 阅读全文

鉴于此SSCE: public class AnonymousClassTest { String param = "initial"; void test() { Runnable runnalbe = new Runnable() { @Override public void run() { System.out.println(param); } }; runnalbe.run(); param = "after"; runnalbe.run(); } public static void main(Str…

2020年10月27日 0条评论 32点热度 阅读全文

a在这里只能是最终的。为什么?如何在a方法中重新分配onClick()而又不将其保留为私有(private)成员? private void f(Button b, final int a){ b.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { int b = a*5; } }); } 单击后如何返回5 * a?我的意思是, private void f(Button b, final in…

2020年7月28日 0条评论 40点热度 阅读全文

我正在使用一些代码,其中一个对象“ foo”正在创建另一个对象“ bar”,并将其传递给Callable。此foo之后将返回栏,然后我希望foo变得无法访问(即:可用于垃圾收集)。 我最初的想法是仅匿名创建Callable。例如: class Foo { ... public Bar createBar() { final int arg1 = ... final int arg2 = ... final int arg3 = ... return new Callable<Baz>() { @Over…

2020年7月11日 0条评论 28点热度 阅读全文

This question already has answers here: Can we create an object of an interface? (6个答案) 5年前关闭。 是否可以在Java中创建接口(interface)的实例? 我读过某个地方,使用内部匿名类可以做到,如下所示: interface Test { public void wish(); } class Main { public static void main(String[] args) { Test t = new Tes…

2020年7月2日 0条评论 135点热度 阅读全文

我希望能够在运行时实现在对象运行初始化程序之前调用的方法。这将允许我设置初始化期间使用的字段。 这是一个例子: class A { public A() { initialize(); } public void initialize() { } } class B extends A { public String message; { System.out.println(message); } } public class MainClass { public static void main(final S…

2020年5月30日 0条评论 28点热度 阅读全文

给出以下代码: public interface Selectable { public void select(); } public class Container implements Selectable { public void select() { ... } public void createAnonymousClass() { Selectable s = new Selectable() { public void select() { //see comment below. } }; } …

2020年5月19日 0条评论 44点热度 阅读全文

如果我有一个采用单方法接口(interface)作为参数的方法,则可以这样称呼它: foo(new Bar() { @Override public String baz(String qux) { return modify(qux) + transmogrify(qux); } } 但是,如果必须在一个紧密的循环中数百万次调用 foo,我可能希望避免每次通过循环创建一个匿名类的新实例: final Bar bar = new Bar() { @Override public String baz(String …

2020年4月21日 0条评论 37点热度 阅读全文

谁能解释以下代码的工作原理? interface myInterface{} public class Main { public static void main(String[] args) { System.out.println(new myInterface(){public String toString(){return "myInterfacetoString";}}); System.out.println(new myInterface(){public String myFunction(){…

2020年4月15日 0条评论 37点热度 阅读全文

是否可以传递参数或将外部参数访问到匿名类?例如: int myVariable = 1; myButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // How would one access myVariable here? } }); 没有将监听器创建为实际的命名类,监听器有什么方法可以访问myVariable或将其传递给myVariable? 解决方案如下: 从技术上讲,没有,…

2020年4月7日 0条评论 32点热度 阅读全文