En Java, es posible intentar un molde y volver null
si la conversión falla?
Respuestas
¿Demasiados anuncios?Usted puede utilizar el instanceof
de palabras clave para determinar si usted puede lanzar de forma correcta.
return obj instanceof String?(String)obj: null;
Por supuesto, se puede genericied, realizado en la función, pero creo que la pregunta era acerca de lo que significa Java tienen para lograr esto.
Se puede, pero no con una única función en Java:
public B nullCast(Object a) {
if (a instanceof B) {
return (B) a;
} else {
return null;
}
}
EDIT: tenga en cuenta que usted no puede hacer la clase B genérico (para este ejemplo) sin la adición de la clase de destino (esto tiene que ver con el hecho de que un tipo genérico no está disponible para instanceof
):
public <V, T extends V> T cast(V obj, Class<T> cls) {
if (cls.isInstance(obj)) {
return cls.cast(obj);
} else {
return null;
}
}
MyType e = ( MyType ) orNull( object, MyType.class );
// if "object" is not an instanceof MyType, then e will be null.
...
public static Object orNull( Object o , Class type ) {
return type.isIntance( o ) ? o : null;
}
Supongo que esto de alguna manera podría hacerse con los genéricos, pero también creo, pero probablemente no es lo que se necesita.
Este sencillo método recibe un Objeto y devuelve el Objeto porque el reparto se realiza en el método de cliente.