와일드 카드가있는 경우 빈 목록에서 개체 유형을 가져올 수 없습니다. 빈 목록을 전달하고 목록에 액세스하려고하면 NullPointerException이 발생합니다. 빈 목록을 전달하고 목록을 사용하지 않으면 목록이 실행됩니다. 와일드 카드는 알 수없는 유형으로 사용됩니다. 와일드 카드로 목록을 사용하는 경우 유형은 포함 된 객체에 따라 결정됩니다. list가 비어 있으면 해당 객체 유형에 대한 정보를 가질 수 없음을 의미합니다. 다음은 요소를 포함하는 목록을 전달하는 예제이며 해당 요소가 속한 목록의 개체 유형을 가져올 수 있습니다. 이와 같이 오브젝트 유형을 얻을 수 있습니다. 그럴 수 없다면 당신을 도와 줄 유스 케이스를 설명하십시오. 감사.
public class GenericsTest
{
List<User> userList = new ArrayList();
User aa1 = new User(20, "Mine");
User aa2 = new User(10, "Yours");
userList.add(aa1);
userList.add(aa2);
List<Address> addList = new ArrayList();
Address bb1 = new Address("20", "A B Road", "Kolkata");
Address bb2 = new Address("10", "B C Roy Road", "KOlkata");
addList.add(bb1);
addList.add(bb2);
method1(userList);
method1(addList);
method2(userList);
method2(addList);
public static void method1(List<?> list)
{
if(list.get(0) instanceof User)
{
System.out.println("I am User");
}
if(list.get(0) instanceof Address)
{
System.out.println("I am Address");
}
}
public static void method2(List<?> list)
{
System.out.println("If you are not using list and have your own custom logic to find the type");
}
}
class User
{
int a1;
String b1;
public User(int a1, String b1) {
this.a1 = a1;
this.b1 = b1;
}
}
class Address
{
String line1;
String line2;
String line3;
public Address(String line1, String line2, String line3)
{
this.line1 = line1;
this.line2 = line2;
this.line3 = line3;
}
}
출처
2016-06-24 10:15:38
RCS
당신은 할 수 - 참조 [타입 삭제] (http://stackoverflow.com/questions/339699/java-generics-type-erasure-when-and-what-happens). –
다음과 같이 타입을 넘길 수 있습니다 :''' void method1 (리스트 리스트, 클래스 cls) {...}''' –
자신 만의리스트를 생성하지 않으면 볼 수 없습니다 유형에 대한 정보. 이미 대답은 [여기]입니다 (http://stackoverflow.com/questions/10108122/how-to-instanceof-listmytype) – SomeDude