标签: anonymous-inner-class

Java - 这些类是哪些类; 这是匿名的内部类?

我读过几篇相互矛盾的在线文章.我认为这将是匿名内部类的一个例子:

button.addActionListener(new ActionListener() {
    public void actionPerfored(ActionEvent e) {
       // do something.
    }
});
Run Code Online (Sandbox Code Playgroud)

但是,我也看到这被描述为一个匿名的内部类:

ActionListener myListener = new ActionListener() { 
    public void actionPerformed(ActionEvent event) {
          // do something.
    }
};
button.addActionListener(myListener);
Run Code Online (Sandbox Code Playgroud)

哪个是哪个,为什么?谢谢!

java anonymous-inner-class inner-classes actionlistener

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

编译器和运行时系统如何处理java中的嵌套类型?

编译器如何知道嵌套类型,如:

  • 嵌套的内部类
  • 匿名课
  • 嵌套接口

.....等等

需要清晰.......

java jvm anonymous-inner-class anonymous-class nested-class

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

Java中的公共匿名内部类

匿名内部类默认是私有的吗?我可以公开吗?

我需要通过反射访问方法.

java anonymous-inner-class public

0
推荐指数
1
解决办法
1542
查看次数

在定义之前引用匿名内部类

另一篇文章中,我被告知在一个使用它的函数之后(下面)定义一个匿名内部类是错误的.但是,类似下面的东西编译并运行正常:

public class CompTest {

    public static void main(String[] args) {
        TreeSet<Integer> ts = new TreeSet<Integer>(intComp);
        ts.add(1);
        ts.add(2);
        ts.add(3);
        System.out.println(ts.toString());
    }

    private static Comparator<Integer> intComp = new Comparator<Integer>() {
        @Override
        public int compare(Integer i1, Integer i2) {
            return i2.compareTo(i1);
        }
    };

}
Run Code Online (Sandbox Code Playgroud)

官方消息是什么?我的猜测是,既然intCompstatic,那么当类CompTest被"加载" 时它被实例化一次(由于只有一个主方法并且没有CompTest构造任何对象,因此不确定该加载是如何发生的),因此当main()需要时intComp,它是可用的无论源文件在何处实际定义.

即使它确实有效(出于上述原因,甚至是不同的原因)......这是不好的做法吗?

java anonymous-inner-class

0
推荐指数
1
解决办法
78
查看次数

在Java中,如何从匿名类外部访问变量

例如:

for (int i = 0; i < 10; i++){
   SomeClass something = new SomeClass();
   something.setOnClickListener(new OnClickListener() {
      public void onClick(){
         doSomething(i);
      }
   });
}
Run Code Online (Sandbox Code Playgroud)

我不允许使用变量i,Eclipse建议我制作i final,但我不能这样做,因为我需要它来迭代?

java anonymous-inner-class

0
推荐指数
1
解决办法
443
查看次数

创建扩展其他类的内部匿名类

我知道这有效:

class Main{
    public static void main(String[]args){
        AbstractClass object = new AbstractClass(){ ... };
    }
}
Run Code Online (Sandbox Code Playgroud)

它创建了一个隐式扩展AbstractClass类的对象(很明显abstract).

但是下面的工作也会这样吗?

class Main{
    public static void main(String[]args){
        ConcreteClass object = new ConcreteClass (){ ... };
    }
}
Run Code Online (Sandbox Code Playgroud)

ConcreteClass是一个不是的类abstract.

java anonymous-inner-class abstract

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