在我编写的类中,我通常不得不将变量强制转换为其他数据类型。我想用一种方法来截断这个过程。我希望它是这样的:
public static Object typeCast(Object o, DataType type){
if (o instanceof type){
return (type) o;
}else{
return false;
}
}
但是,我知道没有办法将数据类型保存为变量。这可能吗?
是的,每个DataType
都是一个类,您可以在运行时从具有getClass()
的对象中获得该类。保存对象的Class非常简单。
Class<Integer> clazz = Integer.class;
Object obj = Integer.valueOf(1);
clazz.instanceOf(obj); // will return true in that case.
如果可能的话,您还可以使用下面的操作来强制转换,如果不可能,则返回null,这适用于您放入的所有类和对象。
public static <T> T typeCast(Object o, Class<T> type) {
if (type.isInstance(o)) {
return type.cast(o);
} else {
return null;
}
}
您将需要使用Class
对象:
public static Object typeCast(Object o, Class type){
if (o instanceof type){
return type.cast(o);
}else{
return Boolean.FALSE;
}
}
其中type
是您希望将o
转换为的类。
这并不是很有用,因为你会得到一个Object
返回。通用方法在这里可能会有所帮助,但还不清楚您想要实现什么。