중첩 클래스에 Java 문제가 있습니다.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(){
}
}
}
을하지만 문제는 시작 :
지금이 바로 것 같습니다. Eclipse에서이 메시지 This static method cannot hide the instance method from TopClass.NestedClass
을 얻는 정적 메서드는 비 정적 인터페이스 메서드에서 올바르게 상속받지 않습니다.
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(){
}
}
}
그러나 다시를 보이는 추상적 인 방법이 될 수 없다 정적이라고 선언 : 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의 가능성이 부족하다는 것을 해결하려고합니다. 그래서 대신에 나는 그 클래스들을 모두 한가지 방법으로 가지고 있지만 목록에 저장해야합니다. 그들은 상부 구조에 의해 "잡힐"수 있어야합니다. 익명의 클래스 나 열거 형을 시도하는 힌트를 얻었습니다. 이제 시도해보십시오.
여기서 실제로 수행하려고하는 것은 무엇입니까? 의미있는 것은 중첩 된 클래스, 인터페이스 등을 넘어 실제 목표는 무엇입니까? 당신이 진짜 문제가 무엇이든간에 해결책을 너무 과소 평가하는 것처럼 보입니다. 정적 메쏘드를위한 인터페이스는 정적 메쏘드가 오직 선언/존재 * 한 번 *이므로 의미가 없습니다. –
열거 (Enumeration)를 사용하여했습니다. 어떤 작품 잘 :) –
"하지만 정적 클래스의 모든 메서드는 정적이라고 생각"- 아니 이것은 사실이 아니다. 중첩 클래스와 내부 클래스의 차이에 대해 혼란스러워한다고 생각합니다. [this] (http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html) 및 [this] (http://stackoverflow.com/questions/70324/java-inner-class- static-nested-class) –