아이디어는 derrived 클래스에 정의 된 메소드를 호출 할 수있는 기본 클래스를 정의하는 것입니다. 그러나 생성시에 이러한 메소드는 요구 사항에 따라 정확하게 정의됩니다. 즉, 메소드가 단 하나의 인수 인 a HashMap <String String
>.Java : 일반 클래스 유형 정의를 확인하는 방법은 무엇입니까?
지금까지 메소드에 하나의 매개 변수 만 있고 클래스 HashMap인지 확인하기 위해 다음 코드를 사용할 수 있었지만 어떻게 일반 정의가 <String, String
인지 확인 할 수 있습니까?
public boolean isMethodParameterValid(final Method method) {
final Class<?>[] parameters = method.getParameterTypes();
return ((parameters.length == 1) && parameters[0].isAssignableFrom(HashMap.class));
}
일부 유형은 지워지지 않는 경우가 있습니다. 다른 예는'new ArrayList {}'입니다. Neal Gafter의 수퍼 유형 토큰 게시물도 읽을 가치가 있습니다. http://gafter.blogspot.com/2006/12/super-type-tokens.html –
johnstok
아니요, Neals Gafter의 수퍼 유형 토큰은 컴파일 할 때 지워집니다. 런타임시 (Type.getClass()가 허가 된 이후) 제네릭을 인스턴스화하는 데 사용 된 Type에 액세스하는 데 도움이되는 트릭을 사용합니다. – JVerstry