可以将数据类型保存到变量中吗?(DataType t = Integer)



在我编写的类中,我通常不得不将变量强制转换为其他数据类型。我想用一种方法来截断这个过程。我希望它是这样的:

    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返回。通用方法在这里可能会有所帮助,但还不清楚您想要实现什么。

相关内容

  • 没有找到相关文章

最新更新