Возможный дубликат:
Java Class.cast () vs. оператор castЯ безуспешно пытаюсь выяснить, что делает
Class.cast ()
делать или для чего это может быть полезно, в то же время мне интересно, могу ли я каким-то образом отбросить объект через отражение.Сначала я ошибочно подумал, что что-то вроде приведенных ниже строк могло сработать:
Object o = "A string"; String str = Class.forName("java.lang.String").cast(object);
Но без явного приведения это не работает.
Для чего нужен метод
cast
классаClass
? И возможно ли каким-то образом с помощью отражения преобразовывать объекты, чтобы вы нашли класс объекта, использовали для негоClass.forName
и каким-то образом его преобразовали?
Вы можете избежать предупреждения, например, со следующим кодом:
public <T> T getObject(Class<T> type){
Object o = getSomeObject();
if (type.isInstance(o)){
return type.cast(o);
} else {
return null;
}
}
, а следующий код вызовет предупреждение:
public <T> T getObject(){
return (T) getSomeObject();
}
Тип возврата Class.forName
будет Class<? extends Object>
. Вы хотите Class<? extends String>
, например, используя String.class
.
String str = String.class.cast(object);
Не очень полезно, пока вы не начнете заменять String
каким-то типом интерфейса.
В любом случае, отражение обычно является злом.