2013-06-27 2 views
0

이 gwt javadoc 페이지에서 http://www.gwtproject.org/javadoc/latest/com/google/gwt/core/client/GWT.htmljava.lang.Class<?>이 create 함수에 매개 변수로 전달됩니다. 어떻게 유효합니까? .. 나는 create(List<Class> classLiteral) 또는 create(java.lang.Class classLiteral)과 같은 것을 이해할 수 있습니다. 그러나 그것이 사용 된 방법이 나를 크게 혼란스럽게합니다. 명확화가 많이 평가 됨java.lang.Class 및 generics

+1

'create (List classLiteral)의'classLiteral'은 의미가 없습니다. –

답변

4

은 인스턴스의 전체 유형 선언입니다.

import java.lang.Class; 

... 

static <T> T create(Class<?> classLiteral) ... 

이는 javadoc에서 철저히 설명됩니다. java.lang.Class은 클래스를 나타내는 Java 클래스입니다. javadoc here을 읽을 수 있습니다. <?> 당신을 혼란 경우 인스턴스

YourClass yourInstance = ... 
yourInstance.getClass(); // will return an instance of type Class<YourClass> 

이있는 경우

귀하는이 와일드 카드로 알려진,

YourClass.class // where class is a reserved java keyword will return an instance of type Class<YourClass> 

와 클래스의 Class 객체에 액세스 할 수 있습니다. 자세한 내용은 here을 참조하십시오.

+0

글쎄, 와일드 카드가 뭔지 알 겠어. 나는 그것을 다른 형태로 사용해왔다. ClassY를 확장합니다. 하지만 여기서 클래스 bu로 선언되지 않은 클래스로 선언 된 클래스와 함께 사용됩니다. 나는 지금 당신의 링크를 점검하고 내가이 바닥에 도달 할 수 있는지 확인하려고한다. – Malka

+0

오케이 그래서 첫 번째 죄송합니다. 클래스는 실제로 클래스로 선언되어 있습니다. ... 앞으로 더 ... – Malka

+0

@Malka 클래스'클래스 '는 일반적인 클래스입니다. 'public final Class '입니다. Java 소스 또는 javadoc에서 볼 수 있습니다. ''은 (는) ''과 다릅니다. ''은 무엇이든 될 수 있음을 의미합니다. 이전에 'T'는 실제 지정된 유형의 자리 표시 자일뿐입니다. –

2

이 경우 메서드는 클래스 인스턴스가 아닌 클래스 리터럴을 호출합니다. 즉, 클래스의 인스턴스 대신 실제 클래스를 메서드에 전달하고 있음을 의미합니다.

이것의 예는 전화 인 경우입니다 :

생성 (MyClass.class를);

여기서는 Class 객체를 전달하지만 MyClass 인스턴스는 전달하지 않습니다. 그래서, create 메소드는 클래스 객체를 요구하고 클래스 객체를 전달하지 않습니다.

클래스 (java.lang.Class classLiteral) 인 경우 클래스를 확장하는 모든 객체의 인스턴스를 호출합니다.

+1

네, 이해가 안되는 클래스 리터럴을 호출하는 것을 이해합니다. 클래스 은 어떻게 정확합니까? ... 단순한 클래스가이 상황에서 사용되어야하고 클래스가 아니어야합니다. ; create (java.lang.Class classLiteral) – Malka

+1

@Malka ''을 와일드 카드라고합니다. –

+0

나는이 대답을 골랐다. – Malka