아래의 Crud 오브젝트 코드에서 보면, T 타입의 Field 오브젝트 배열이 예상됩니다. 실제로 표시되는 것은 Object 유형의 Field 오브젝트 빈 배열입니다. 내 테스트 클래스는 Timezone이라고합니다. 그래서 Crud 객체를 인스턴스화하면 다음과 같이 보입니다.일반 오브젝트의 유형에 액세스하려면 어떻게해야합니까?
Crud<Timezone> tz = new Crud<Timezone>();
하지만 제가 말한 것처럼 이것이 작동하지 않습니다. 도움말 감사.
import java.util.*;
import java.lang.reflect.*;
public class Crud<T> {
public T getInstance()
{
@SuppressWarnings("unchecked")
T object = (T) new Object();
return object;
}
public ArrayList<String> getMembers() {
ArrayList<String> retval = new ArrayList<String>();
try {
T object = this.getInstance();
Field[] fields = object.getClass().getDeclaredFields(); //Always empty
for (Field field : fields) {
retval.add(field.getName());
}
} catch (Exception e) {
System.out.println(e);
}
return retval;
}
}
그들이'Object's, 당신은'새 개체() 한;의' – m0skit0
가능한 중복을 [어떻게 런타임에 제네릭 형식을 얻는 방법? ] (http : // stackoverflow.com/questions/3941384/how-to-get-the-generic-type-at-runtime) –
당신이 경고하고 있다는 경고 : 여기서는 유용합니다. – Radiodef