정적 클래스라고 불리는 클래스를 어떻게 알 수 있습니까?
class Superclass { static List list() { ... } }
및 하위 클래스 :
class Subclass extends Superclass { ... }
class Subclass2 extends Superclass { ... }
다음과 같이 list
메서드를 호출하고 싶습니다. Subclass.list()
또는 Subclass2.list()
과 함께 호출 된 하위 클래스에 따라 다른 작업을 수행합니다.
어떤 하위 클래스가 list
메서드를 호출하는지 알 수있는 방법이 있습니까?
참고 : 각 하위 클래스에서 list
메서드를 재정의 할 필요가 없습니다.
업데이트 : 모두들 이것은 나쁜 디자인이라고 말하고 있으며, 대부분의 경우 그것이 될 것이라고 생각하지만, 제 생각에는 그렇게 생각하지 않습니다. 내 ORM은 java.lang.Class
을 취하는 메소드를 정의합니다. 내 ORM의 메서드에 대한 속기를 제공하여 ORM.list(User.class, ...)
대신 User.list(...)
을 말할 수있게하려고합니다.
하위 클래스에서 재정의하는 것이 올바른 일처럼 보입니다. 왜 이걸하고 싶지 않니? –
@Oli - Superclass.list 메소드는 기본적으로 getFromDatabase (Subclass.class) 또는 getFromDatabase (Subclass2.class) 등을 호출합니다. 'Superclass'에서 파생 된 클래스가 무엇이든 말하기를 원합니다. 'Subclass.list()'를 호출하여 데이터베이스에서 해당 유형의 목록을 가져옵니다. 'list'만이'Superclass'가 가진 유일한 메소드는 아니기 때문에 각 서브 클래스에서 5 가지 메소드를 오버라이드하고 싶지는 않습니다. – Kyle
@ 카일 : 각각의 파생 된 클래스에서 간단한 보일러 플레이트가 아닌 각 기본 클래스 메소드에서 형식 확인'if-else' 문을 유지해야 할 것입니다. 이것은 광란이다! –