Почему этот класс ведет себя по-другому, когда я не предоставляю универсальный тип?
Я неНе понимаю, почему это смущает компилятор. Я'м с использованием универсального типаT
держать предмет, которыйне связаны сput
а такжеget
методы. Я всегда думалGenericClass
а такжеGenericClass
были функционально идентичны, но я должен ошибаться. При составленииDoesntWork
класс я получаюincompatible types - required: String - found: Object
,Works
класс делает то, что я ожидаю. Какие'здесь происходит?
public class GenericClass {
public void put(Class key, V value) {
// put into map
}
public V get(Class key) {
// get from map
return null;
}
public static class DoesntWork {
public DoesntWork() {
GenericClass genericClass = new GenericClass();
String s = genericClass.get(String.class);
}
}
public static class Works {
public Works() {
GenericClass genericClass = new GenericClass();
String s = genericClass.get(String.class);
}
}
}