我有一个用例,其中我在DB中存储了Java数据类型的列表,如字节、字符、整数、长整型、BigDecimal、BigInteger、布尔型。
所以我的用例是,如果我读取值Long,我需要创建Long.class,如果我读String,则创建String.class。
Class cls = Class.forName("java.lang.Long);,那么我就可以自己使用cls了。
我可以做到这一点,通过使用上述数据类型的Enum,当我从db中读取值时,我将该值传递给enum以获取类类型。但我不知道它是否有效。对于给定的字符串(没有完全限定名),Java中是否有任何方法可以返回类类型。
发布于 2020-05-20 22:52:14
存储对Class对象的引用是有效的,但使用Class对象进行反射可能会耗费大量资源。如果你只是使用这个类作为参考,那就没问题了。
enum Decodable {
    BIG_INTEGER(BigInteger.class),
    INTEGER(Integer.class)
    // etc
    private final Class<?> decodableClass;
    private Decodable(Class<?> decodableClass) {
        this.decodableClass = decodableClass;
    }
}您也可以只维护一组Class对象。
private static final Set<Class<?>> DECODABLE_CLASSES = ImmutableSet.of(Integer.class, BigInteger.class); //etchttps://stackoverflow.com/questions/61916136
复制相似问题