Доброго времени суток!
Сегодня решая задачи столкнулся с тем, что нижеследующий код не компилируется:
public class Main {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("test");
Iterator iter = set.iterator();
while (iter.hasNext()) {
String x = iter.next();
System.out.println(x);
}
}
}
Выдает ошибку: incompatible types: java.lang.Object cannot be converted to java.lang.String
Окей, используем преобразование типа, правим строчку 8:
String x = (String )iter.next();
Все хорошо, программа отработала. Какой же тогда тип переменной там хранится? Попробуем посмотреть
public class Main {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("test");
Iterator iter = set.iterator();
while (iter.hasNext()) {
System.out.println(iter.next() instanceof String);
}
}
}
Консоль: true
Я ничего не понимаю.