Вы никак не можете получить тип объекта из пустого списка, если в нем есть подстановочный знак. Если вы передаете пустой список и пытаетесь получить доступ к списку, тогда придет исключение NullPointerException. Если вы передаете пустой список и не используете его, он будет запущен. Подстановочный знак используется для неизвестного типа. Если вы используете список с подстановочными знаками, то тип будет определяться на основе содержащегося в нем объекта. Если список пуст, это означает, что у вас не может быть никакой информации о типе объекта, к которому он принадлежит. Вот пример, когда я передаю список, содержащий элемент, и я могу получить тип объекта списка, к которому он принадлежит. Вы можете использовать что-то подобное, чтобы получить тип объекта. Если вы не можете, объясните свой вариант использования, который поможет вам. Спасибо.
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;
}
}
person
RCS
schedule
24.06.2016
<T> void method1(List<T> list, Class<T> cls) {...}
- person Jorn Vernee   schedule 22.06.2016