작성
·
356
답변 3
0
List<String> iAmList = new ArrayList<>();
Constructor<List<String>> constructor = (Constructor<List<String>>) Class.forName("java.util.ArrayList").getConstructor(null);
List<String> amIList = constructor.newInstance();
0
네. 맞습니다.
예를 들어 만약 ArrayList<String> 이란 클래스를 생성하고 싶은데요.
일단 방향이 맞는지는 모르겠지만 super type token 이란것 까지는 알게 되었는데요.. ParameterizedType 를 이용해서 RowType 인 ArrayList 와 TypeArgument 인 String 까지 구하는법은 알아냈는데요.
ArrayLIst 와 String 을 알아냈는것 까지는 좋았는데
ArrayList 야 RowType 으로 ((Class<?)rowType)getConstructor(null).newInstance() 이런식으로 인스턴스를 만든다고 하면 거기다 제네릭값을 어떻게 줘야 하는지 감이 안잡히네요.
제가 글주변이 없어서 소스상으로 말씀드리면
public void createList(Class<?> clazz) {
List<clazz> list = new ArrayList<>(); ???
Constructor<List<clazz>> constructor = Class.forName("java.util.ArrayList").getConstructor(null); ???
constructor.newInstance(); ???
}
위와 같은 방법으로 제네릭 클래스를 만들고 싶어서요.
0