Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一个Java文件,但两个类_Java_Compilation - Fatal编程技术网

一个Java文件,但两个类

一个Java文件,但两个类,java,compilation,Java,Compilation,我的项目中有几节课。编译之后,我找到了两个java文件,分别对应于name.class和name$.class。原因是什么?我看不出这些课程有什么特别之处 问候语这是一个匿名的内部类,如示例: new Runnable() { ... } 编辑:评论中的一些有效点: enum类型也被编译到一个单独的类文件中(因为它们实际上是类) 匿名内部类按顺序编号(MyClass$1.class,MyClass$2.class等) 命名了不一致的内部类(例如,MyClass$InnerNamedClass

我的项目中有几节课。编译之后,我找到了两个java文件,分别对应于name.class和name$.class。原因是什么?我看不出这些课程有什么特别之处


问候语

这是一个匿名的内部类,如示例:

new Runnable() { ... }
编辑:评论中的一些有效点:

  • enum
    类型也被编译到一个单独的类文件中(因为它们实际上是类)
  • 匿名内部类按顺序编号(
    MyClass$1.class
    MyClass$2.class
    等)
  • 命名了不一致的内部类(例如,
    MyClass$InnerNamedClass.class

它是一个匿名的内部类,例如:

new Runnable() { ... }
编辑:评论中的一些有效点:

  • enum
    类型也被编译到一个单独的类文件中(因为它们实际上是类)
  • 匿名内部类按顺序编号(
    MyClass$1.class
    MyClass$2.class
    等)
  • 命名了不一致的内部类(例如,
    MyClass$InnerNamedClass.class

    • 在公共类中有一个内部类(匿名或命名)。这种行为是正常的;Java编译器将为每个类生成一个.class文件,无论源文件中定义了多少个类。

      公共类中有一个内部类(匿名或命名)。这种行为是正常的;Java编译器将为每个类生成一个.class文件,无论源文件中定义了多少个类。

      Java编译器将为.Java文件中定义的每个类创建一个.class文件。您应该有这样一个匿名内部类:

      button.addListener(new PressListener() {
          public void onPressed(Event event) {
              System.out.print("test");
          }
      });
      

      Java compile为.Java文件上定义的每个类创建一个.class文件。您应该有这样一个匿名内部类:

      button.addListener(new PressListener() {
          public void onPressed(Event event) {
              System.out.print("test");
          }
      });
      

      Java中的内部类被编译成
      类$InnerClass

      如果已命名类,则将使用该类的名称。如果该类是匿名的,即您有以下内容:

      final ActionListener actionListener = new ActionListener() {
      
          public void actionPerformed(ActionEvent e) {
              throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
          }
      };
      

      然后使用数字,这将是
      类$1

      Java中的内部类被编译为
      类$InnerClass

      如果已命名类,则将使用该类的名称。如果该类是匿名的,即您有以下内容:

      final ActionListener actionListener = new ActionListener() {
      
          public void actionPerformed(ActionEvent e) {
              throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
          }
      };
      

      然后使用数字,因此这将是
      类$1

      请发布您的类定义。可能重复:编译器将为每个类创建一个类文件。。。即使在同一个.java文件中定义了多个类。的可能重复项请发布您的类定义。可能重复项:编译器将为每个类创建一个类文件。。。即使在同一个.java文件中定义了多个类。如果您有多个匿名内部类,它们也将被称为MyClass$、MyClass$1、MyClass$2等。感谢您的快速回答。我有两个run()线程。这将解释这两个类。如果您有多个匿名内部类,它们将被称为MyClass$、MyClass$1、MyClass$2等。感谢您的快速回答。我有两个run()线程。所以它可以解释这两个类。