Ответ 1
object instanceof Type
есть true
, если объект является Type
или подклассом Type
object.getClass().equals(Type.class)
есть true
, только если объект является Type
Я должен знать, если Object
является строкой или любым другим типом класса, как я могу это сделать? В настоящее время я делаю это, как показано ниже, но его не очень хорошее кодирование.
try {
String myString = (String) object;
// do stuff here
} catch(Exception e) {
// it wasn't string, so just continue
}
object instanceof Type
есть true
, если объект является Type
или подклассом Type
object.getClass().equals(Type.class)
есть true
, только если объект является Type
Используйте синтаксис instanceof
.
Так же:
Object foo = "";
if( foo instanceof String ) {
// do something String related to foo
}
Охраняйте свой бросок с помощью instanceof
String myString;
if (object instanceof String) {
myString = (String) object;
}
Используйте instanceof
или метод Class.isAssignableFrom(Class<?> cls)
.
javamonkey79 прав. Но не забывайте, что вы могли бы сделать (например, попробовать что-то еще или уведомить кого-то), если объект не является экземпляром String.
String myString;
if (object instanceof String) {
myString = (String) object;
} else {
// do something else
}
BTW: Если вы используете ClassCastException вместо Exception в приведенном выше коде, вы можете быть уверены, что вы поймаете исключение, вызванное тем, что объект String будет отличен. И не любые другие исключения, вызванные другим кодом (например, NullPointerExceptions).
Возможно, вам не нужно знать, в зависимости от того, что вы делаете с ним.
String myString = object.toString();
или если объект может быть нулевым
String myString = String.valueOf(object);
Нельзя ли использовать typeof (object) для сравнения с