我对嵌套类有 Java 问题。
我的第一个类结构如下所示:
public class TopClass {
public void mainMethod() {
// uses the different "method" methods from
// NestedClass-implementing nested classes
}
private interface NestedClass {
public void method();
}
private class NestedClass1 {
public void method() {
}
}
private class NestedClass2 {
public void method(){
}
}
}
但现在我希望这些method()
方法是静态的,因为它们应该是主要的。
如果没有将它们放在静态类中,我无法将它们设为静态,但这没问题,我将类设为静态,无论如何它们都应该是静态的。
现在看起来像这样:
public class TopClass {
public void mainMethod() {
// uses the different "method" methods from
// NestedClass-implementing nested classes
}
private static interface NestedClass {
public void method();
}
private static class NestedClass1 {
public static void method() {
}
}
private static class NestedClass2 {
public static void method(){
}
}
}
但麻烦就开始了。静态方法不能从非静态接口方法正确继承,因为我This static method cannot hide the instance method from TopClass.NestedClass
在 Eclipse 中收到此消息。
当我将接口方法设为静态时,它给了我这个错误:Illegal modifier for the interface method method; only public & abstract are permitted
所以我想到了一个抽象类,并尝试了这个:
public class TopClass {
public void mainMethod() {
// uses the different "method" methods from
// NestedClass-implementing nested classes
}
private static abstract class NestedClass {
public static abstract void method();
}
private static class NestedClass1 {
public static void method() {
}
}
private static class NestedClass2 {
public static void method(){
}
}
}
但同样,看似抽象的方法不能声明为 static: The abstract method method in type NestedClass can only set a visibility modifier, one of public or protected
。
离开静态(在抽象类方法中),在 NestedClass1 和 2 中的方法方法上出错:This static method cannot hide the instance method from TopClass.NestedClass
。
有没有办法声明某种上层结构来覆盖静态方法?
编辑:我实际上试图解决的问题是 Java 无法存储对方法的引用。因此,我让这些类每个人都只有一种方法,但是要将它们存储在 List fe 中,它们必须能够被上层结构“捕获”。我得到了尝试匿名类或枚举的提示,现在就试试。