2013-05-29 2 views
0
package com.test.scjp; 

import java.util.List; 
import java.util.ArrayList; 

public class TestGeneric { 
    public static void main(String args[]){ 
     try{ 
      List<String> l = new ArrayList<String>(); 
      TestGeneric t = new TestGeneric(); 
     //t.test(l); 
      System.out.println("Test"); 
      l=t.test(l); 
      System.out.println("Test2"); 

      System.out.println(l.get(0)); 
     } 
     catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 
    public List<String> test(List l){ 
     System.out.println("Test0"); 
     l.add(new Integer(1)); 
     System.out.println("Test1"); 
     return l; 
    } 
} 

Когда я запускаю этот код в 20 раз я получаю различные выходы:Получение другого выхода из главного

Выход 1:

Test 
Test0 
Test1 
Test2 
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String 
    at com.test.scjp.TestGeneric.main(TestGeneric.java:16) 

Выход 2:

Test 
Test0 
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String 
    at com.test.scjp.TestGeneric.main(TestGeneric.java:16) 
Test1 
Test2 
+0

Тест test0 Test1 Test2 java.lang.ClassCastException: java.lang.Integer не может быть приведен к java.lang.String \t в com.test.scjp.TestGeneric .main (TestGeneric.java:16) –

+0

'l.add (new Integer (1))' <- вы пытаетесь добавить целое число в список, содержащий элементы String. – fge

+5

Вывод в консоли происходит из двух потоков: System.out' и 'System.err', и, как вы можете видеть, иногда вывод из' err' может быть напечатан при печати вывода из 'out'. Чтобы сделать его более читаемыми IDE, например Eclipse, используется другой цвет в 'err'. – Pshemo

ответ

0

Внутри теста, ваш список не является общим - поэтому вам разрешено добавлять к нему любой объект.

Проблема заключается в том, что за ее пределами вы используете Список, который ограничивается строками.

Этот конфликт вызывает проблемы.

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