매개 변수로 특정 상위 유형을 받아들이는 메소드가 제공됩니다. 이 메서드 내에서 전달 된 개체의 실제 클래스를 확인하는 방법이 있습니까? 나는. 허용되는 매개 변수의 하위 유형이 실제로 전달 된 경우 해당 유형을 찾는 방법이 있습니까? 이것이 가능하지 않다면 왜 (언어 디자인 관점에서) 설명 할 수 없습니까? 감사합니다자바 - 객체의 클래스를 알려주는 방법?
업데이트 : 단지 객체가 MyType
의 하위 유형이 실제로 경우 메소드 서명이 MyType
인 것으로 매개 변수를 지정하기 때문에 내가
Context: MySubType extends MyType
void doSomething(MyType myType) {
//determine if myType is MyType OR one of its subclasses
//i.e. if MySubType is passed as a parameter, I know that it can be explicitly
//cast to a MySubType, but how can I ascertain that its this type
//considering that there could be many subclasses of MyType
}
분명했다 확인, 그럼 어떻게 하나가 알 수 있도록하기 위해 (그리고 어느).
n을 할 이렇게하고 싶지 않아. 대신 "특정 수퍼 유형"의 모든 하위 클래스가 공통 메소드 및 속성을 갖도록하여 다형성을 유지하려고합니다. 왜 당신은 다형성 해결책을 피하고 있습니까? –
다형성 해결책을 피할 수는 없지만 가능한지 궁금합니다. 그리고 가능하지 않다면 (아마도 누군가가 제안한 것처럼 반사없이), 왜 안 되겠습니까? – lkm