Я пытаюсь решить эту, по-видимому, простую универсальную проблему приведения:
Во-первых, объявляю этот простой универсальный объект:
public interface GenericObject<T> {}
Во-вторых, объявляю этот рабочий интерфейс:
public interface Generic { // I don't want to do Generic<T>
<T> void setGenericObject(GenericObject<T> obj);
}
Тогда давайте реализуем этот интерфейс:
public class GenericImpl implements Generic {
private GenericObject<String> genericObject; // This is needed
@Override
public <String> void setGenericObject(GenericObject<String> obj) {
genericObject = obj; // eclipse give me this error :
// Type mismatch: cannot convert from
// interfaces.GenericObject<String> to
// interfaces.GenericObject<java.lang.String>
}
}
Как я могу решить эту ошибку?
Редактировать:
На самом деле, единственный способ, которым я долженрешить эту проблему, чтобы сделать это:
public class GenericImpl implements Generic {
private GenericObject<String> genericObject;
@SuppressWarnings("unchecked") // I don't realy like this
@Override
public <T> void setGenericObject(GenericObject<T> obj) {
genericObject = (GenericObject<String>) obj;
}
}