2016-03-02 1 views
0

Я пытаюсь изучить свойства класса Java. Я хочу распечатать список ключей свойств. Тем не менее, IDE отображается следующее сообщение об ошибке:in Enumeration <Object> eo1 = p2.propertyNames(), зачем нужно отличать p2.propertyName() до перечисления <Object>?

Enumeration<Object> eo1 = p2.propertyNames(); 
//error, cast...propertyNames(...) to Enumeration 

Я сделал следующие изменения:

Enumeration<Object> eo1 = (Enumeration<Object>) p2.propertyNames(); 

И все прекрасно работает. Тем не менее, мне просто интересно, зачем мне нужно отливать propertyNames() до Enumeration<Object>. Я знаю, что p2.propertyNames() возвращает объект Enumeration, но синтаксис очень запутан для новичка, подобного мне.

Properties p1 = new Properties(); 

try (OutputStream os1 = new FileOutputStream("random.txt")){ 
    p1.setProperty("1", "one"); 
    p1.setProperty("2", "two"); 
    p1.setProperty("3", "three"); 
    p1.store(os1, "comment"); 
} catch(IOException e){ 
    e.printStackTrace(); 
} 

Properties p2 = new Properties(); 
try (InputStream is1 = new FileInputStream("random.txt")){ 
    p2.load(is1); 
    System.out.println(p2.getProperty("2")); 
} catch (IOException e){ 
    e.printStackTrace(); 
} 

Enumeration<Object> eo1 = p2.propertyNames(); 
while (eo1.hasMoreElements()){ 
    System.out.println(eo1.nextElement()); 
} 

ответ

0

Проверьте тип возвращаемого свойства propertyNames(). Это не перечисление. его public Enumeration<?> propertyNames(). оба они разные. Узнайте больше о generics

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