Tag: anonymous inner class

如何在匿名内部类中使用外部方法的输入?

对于Instance,如何在我的Anonymou内部类中使用输入’hasTypedSomeToken’ – public class Login { void display(boolean hasTypedSomeToken) { //some code here Button btnLogIn = new Button(“Login”, new ClickHandler() { @Override public void onClick(ClickEvent event) { if(Login.this.hasTypedSomeToken) //HOW TO USE hasTypedSomeToken HERE { //do something } } } }

是否有一种语法可以从另一个匿名内部类中获取对匿名内部类的引用?

考虑这种情况: public class SomeClass { public void someMethod() { new SomeInterface() { public void someOtherMethod() { new SomeOtherInterface() { new someThirdMethod() { //My question is about code located here. } }; } }; } } 是否有语法引用注释代码中SomeInterface表示的匿名内部类的实例? 对于SomeClass,你可以做SomeClass.this是否有相当于获得SomeInterface的实现? 如果没有,当然你可以在SomeInterface实现中定义一个最终的局部变量并引用它,但我只是想知道是否实际上有直接语言支持来引用该实例。

javac生成的$$中的$$是什么意思?

当转移由DependencyFinder和java-callgraph等库生成的java调用图时,我发现java编译器为匿名函数,内部类等生成名称。 我已经发现了其中几个的含义(如果我错了,请更正): org.example.Bar$Foo引用Foo ,它是org.example.Bar的内部类。 org.example.Bar$1引用在org.example.Bar$1一个方法中声明的匿名类。 org.example.Bar.lambda$spam$1()是指在org.example.Bar.spam()方法中声明的lambda。 但是,我还发现: org.example.Bar$$Lambda$2.args$1 org.example.Bar$$Lambda$2.call() org.example.Bar$$Lambda$7.lambdaFactory$() org.example.Bar$$Lambda$7.get$Lambda() 上面的四个名字是指什么? 双美元( $$ )是什么意思?

如何将非final变量传递给匿名内部类?

我有这些代码行。 我知道你不能将非final变量传递给内部类但我需要将变量i传递给匿名内部类以用作seatID。 你能建议这样做的方法吗? JButton [] seats = new JButton [40]; //creating a pointer to the buttonsArray for (int i = 0; i < 40; i++) { seats[i] = new JButton();//creating the buttons seats[i].setPreferredSize(new Dimension(50,25));//button width panel4seating.add(seats[i]);//adding the buttons to the panels seats[i].addActionListener(new ActionListener() { //anonymous inner class public void actionPerformed(ActionEvent evt) { String firstName = […]

Lambda的行为与匿名内部类不同

在做一些基本的lambda练习时,一个看似相同的匿名内部类的输出给了我一个不同于lambda的输出。 interface Supplier { T get(T t); } 场景#1 Supplier s1 = new Supplier() { @Override public Integer get(Integer t) { return t; } }; Supplier s2 = t -> t; System.out.println(s1.get(2)); System.out.println(s2.get(2)); 输出2和2 。 这里没什么新鲜的。 但是当我这样做时: 场景#2 Supplier s1 = new Supplier() { @Override public Integer get(Integer t) { return t++; } }; Supplier […]

使用Java中的接口的匿名内部类

因此,当查看lambda表达式并使用它们来替换Java中的EventHandlers的匿名内部类时,我遇到了一些让我停下来思考的匿名内部类。 例如,在为通常实现ActionListener的东西编写匿名内部类时,我们编写 myJButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e){ //DO SOMETHING } }); 我对此感到困惑的是,ActionListener是一个界面,所以我认为有必要做一些像… myJButton.addActionListener(new myButtonListener implements ActionListener() { @Override public void actionPerformed(ActionEvent e){ //DO SOMETHING } }); 但这甚至都没有编译。 我想我之所以这是显而易见的,相反我们使用私有内部类,我们使用 private MyButtonListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { //DO SOMETHING } } myJButton.addActionListener(new MyButtonListener()); 所以我的问题是: 1)为什么我们能够直接从接口创建匿名内部类而不必通过实现接口的类创建一个? 2)为什么我无法创建一个实现ActionListener的匿名内部类而不是直接来自它,就像我在第二个代码片段中显示的那样?

编译器正在创建带有$的额外类文件

我正在使用Eclipse,我使用SWT编写了一个Java应用程序。 当Eclipse编译我的程序时,它将我的主文件重命名为4个不同的文件,如下所示: MainFile.class MainFile $ 1.class MainFile $ 2.class MainFile $ 3.class 当我从命令行运行这个程序时,我得到了 找不到主类:MainFile.class。 程序将会退出。 我真的不明白为什么会这样。

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

如何从匿名类的方法中访问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(); } […]

有没有办法实例化匿名内部类中定义的类?

我随机编写了一个代码并遇到了一个问题:如何实例化在匿名内部类中定义的E类(如下所示); 喜欢: A c = new A() { class E{ //Statements } };

匿名内部类中的接口如何工作?

interface MyInter { public void display(); } class OuterClass8 { public static void main(String arg[]) { MyInter mi=new MyInter() { public void display() { System.out.println(“this is anonymous class1”); } }; mi.display(); } } 据我所知,我们无法实例化一个接口,那么这是怎么发生的呢?