同一文件中的Java公共接口和公共类

Lin*_*ers 15 java

在单个.Java文件中,是否可以拥有公共接口和公共类(实现接口)

我是Java编码的新手,并且在网上的大多数地方编写的.java文件不能包含超过2个公共类.我想知道接口和类是否也是如此.

aio*_*obe 15

不,这是不可能的.每个.java文件最多可以有一个顶级公共类型.JLS 7.6.顶级类型声明声明如下:

[...]每个编译单元最多只能有一个[顶级公共]类型.

但是,您可以在同一文件中拥有受包保护的类.编译得很好(如果你把它放在一个名为的文件中Test.java:

public interface Test {
    // ...
}

class TestClass implements Test {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

  • [JLS§7.6顶级类型声明](http://java.sun.com/docs/books/jls/third_edition/html/packages.html#26783) (2认同)

emb*_*oss 7

如果使用嵌套类,则可以在一个文件中包含任意数量的公共类.在你的例子中:

public interface I {
    public class C implements I {
        ...
    }

    public class D implements I {
        ...
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

  • 接口的成员类是隐式公共和静态的. (2认同)

Foo*_*Bah 5

Java 规则是源文件中只能出现一个公共类或接口,并且名称必须与文件匹配(即 Test.java --> 公共类 Test 或公共接口 Test,但不能两者都匹配)。


Sha*_*awn 5

public interface A
{
    public void helloWorld();

    public static class B implements A{

        @Override
        public void helloWorld() {
            System.out.print("Hello World");

        }

    }
}
Run Code Online (Sandbox Code Playgroud)