컬렉션에 저장된 유형 (리터럴) 변수를 선언 할 수 있습니까? Java와 같은 컴파일 된 언어가 아닌 해석 된 기능/작업이 더 많을 수 있습니까? 예를 들어컬렉션에 저장된 유형 (리터럴) 변수 선언
:
import java.util.*;
class Base {}
class A1 extends Base{}
class A2 extends Base{}
public class Test{
public static void main(String[] args){
ArrayList<Class<? extends Base>> typeArrayList=new ArrayList<Class<? extends Base>>();
typeArrayList.add(A1.class);
typeArrayList.add(A2.class);
typeArrayList.add(A1.class);
typeArrayList.add(A1.class);
//etc. etc.
//now that all the types are nicely stored in a collection,
//could we somehow use them to declare variables of those types?
//e.g. declare something like:
//typeArrayList.get(1) someVariable;
}//main
}//Testlass
감사합니다. AVolpe 덕분에, 이것은 저장된 유형의 객체를 만드는 데 도움이됩니다. 원래 질문 (해당 유형의 변수 선언)과 관련하여 첫 번째 솔루션은 Object 유형의 변수 인 을 선언하지만 두 번째 코드는 collection 요소에 저장된 유형을 이미 알고 있어야하므로 해당 유형으로 다운 캐스트 할 수 있습니다. – Pedja
질문을 다시 읽은 후에는 리플렉션을 사용하여 메서드를 호출하는 것이 유일한 방법이라고 생각합니다. 컴파일러는'클래스 '가'List'의 어떤 위치에 있는지 알 수 없습니다. 건배 –