나는 사이트가 비슷한 질문을 가지고 있다는 사실을 알고 있으며, 주어진 질문을 빨리 읽음으로써 떠오르는 첫 번째 대답은 "아니오, 당신은 할 수 없습니다 "그러나 나는 아직도 내가 구하는 것이 어떤 수단으로도 불가능하지 않다는 인상을 받는다.런타임에 제네릭 클래스의 유형을 결정하십시오.
클래스에 제네릭 메서드를 만들었으므로 메서드에 전달 된 Object 형식을 확인하고 싶습니다. 직접적으로 처리 할 수 없다는 것을 알고 있으므로 객체에 Class<T>
obj를 전달합니다. 그러나 메서드 본문에서 형식 검사를 제대로 수행하는 방법을 찾을 수 없습니다. ClassA
, ClassB
또는 ClassC
: T
항상 3 가지 유형이라고 가정
public <T> void readData(T obj1, Class<T> obj2){
}
. if-else-if 블록은 어떻게 보이게해야합니까? obj2
가 나타내는 클래스 또는 인터페이스에 obj1
캐스트
orst는 if (obj1 instanceof ClassA) {...} if (obj1 instanceof ClassB) {...} ....' –
언제나 obj1.getClass(). getSimpleName(). equals (same)을 수행 할 수 있습니다. obj2에 대한) 그리고 따라서 그들은 이름에서 동등한 지 알면, 그렇지 않으면 왜 * 두 개의 매개 변수를 보내는 지 알지 못합니다. – Infested
@ LuiggiMendoza가 옳습니다. 이 경우 obj2가 필요하지 않습니다. – Pace