匿名类遇到了一些问题

Ami*_*rWG 0 java

我试图在Java中创建anon类

class myClass {

   int x = 10;

 }



public class Main  {
    public static void main(String[] args) {
        myClass myObject = new myClass() {

           public void run(){
               System.out.println(x);
           }
        };
        myObject.run(); //gives an error saying "method run() is undefined for the type myClass"
    }

  }
Run Code Online (Sandbox Code Playgroud)

尽管它创建了一个包含run()方法的匿名类,但我是一个完整的java初学者,但我大部分时间都在编写代码,但它似乎根本不起作用,这给我一个错误,说方法run()未定义javascript,javascript是我最熟悉的语言,并且我正试图习惯Java概念,所以对这个人来说,这个问题似乎很愚蠢,对此我深表歉意。提前致谢

And*_*ner 6

这是因为编译器不知道有一个run方法,因为在基类上没有一个方法myClass

这将在Java 10+中使用var

var myObject = new myClass() {

       public void run(){
           System.out.println(x);
       }
    };
    myObject.run();
Run Code Online (Sandbox Code Playgroud)

之所以myObject可行myClass,是因为它不完全是一个,但实际上实际上是匿名类,该类的名称类似于TheContainingClass$1(其中TheContainingClass是出现此代码的类的名称)。

有点奇怪,因为您实际上不能按名称引用此类,只能使用var!

或者,在Java的早期版本中,如果不将其分配给变量,它将起作用:

new myClass() {

       public void run(){
           System.out.println(x);
       }
    }.run();
Run Code Online (Sandbox Code Playgroud)

同样,这是有效的,因为run()调用的接收者具有匿名类的类型,而不是myClass; 但是在Java 10之前的版本中,根本没有办法声明该类型的变量。