9阅网

您现在的位置是:首页 > 知识 > 正文

知识

java - 获取给定字符串的类名

admin2022-11-04知识17

我有一个用例,我在DB中存储了Java数据类型列表,比如Byte, Character, Integer, Long, BigDecimal, BigInteger, Boolean。

所以我的用例是这样的 如果我读取Long这个值,我需要创建Long.class,如果我读取String,则创建String.class。

Class cls = Class.forName("java.lang.Long);,那么我就可以使用cls来实现自己的目的。

我可以通过上述数据类型的Enum来实现,只要我从db中读取值,我就把值传给enum来获得类的类型。但我不知道这样做是否有效。在Java中是否有任何方法可以给出类似于给定字符串的方法,(没有完全限定名),它应该返回类的类型。



【回答】:

存储对Class对象的引用是高效的,但使用Class对象进行反射可能会很昂贵。如果你只是使用Class进行引用,那么你就可以了。

enum Decodable {
    BIG_INTEGER(BigInteger.class),
    INTEGER(Integer.class)
    // etc

    private final Class<?> decodableClass;

    private Decodable(Class<?> decodableClass) {
        this.decodableClass = decodableClass;
    }
}

你也可以只维护一个Set of Class对象。

private static final Set<Class<?>> DECODABLE_CLASSES = ImmutableSet.of(Integer.class, BigInteger.class); //etc