2014-05-22 2 views
1

Скажем, у меня есть следующие два пустых спискаКак я могу сказать, тип содержимого пустого списка в Java

List<String> obj1 = new ArrayList<String>(); 
List< Integer> obj2 = new ArrayList<Integer>(); 

без предвидению, как я могу сказать, что типа String и который имеет тип Integer? (Пожалуйста, не забудьте, зачем мне эта информация).

Здесь я не могу больше делать

if (!list.isEmpty() && list.get(0) instanceof String) 

как список пуст.

+8

Если это локальная переменная **, вы не можете **. И в основном вы теперь должны изменить _Пожалуйста, неважно, зачем мне эта информация. –

+3

Это невозможно. Я также считаю, что подобные ситуации могут также указывать на дефект дизайна. – Leon

+0

@SotiriosDelimanolis, я просто пытаюсь избежать заграждения комментариев о том, для чего это необходимо, и т. Д. Но список ретранслируется через метод обновления наблюдателя, где наблюдаемый может отправлять любой тип контента. – learner

ответ

-2

Это неправильный подход, но он работает!

List<String> obj1 = new ArrayList<>();  
List<Integer> obj2 = new ArrayList<>(); 

Object o = new Integer(7); 
try{ 
    obj1.add((String) o); 
    System.out.println("This is a list of integer!"); 
}catch(ClassCastException ex){ 
    System.out.println("This is not a integer list!"); 
} 
+0

Если это не так, зачем его делиться? – 2rs2ts

+1

Простое выполнение '(String) нового Integer (7)' гарантирует вам исключительное исключение класса независимо от того, что. – Arkadiy

+0

Здесь вы можете предположить, что OP получает «Список » в своем методе наблюдателя. –

Смежные вопросы