繁体   English   中英

获取给定字符串的 Class 名称

[英]Get Class Name for the given String

我有一个用例,我在 DB 中存储了 Java 数据类型列表,如字节、字符、Integer、Long、BigDecimal、BigInteger、Z27226C864BAC7454A8504F8EDB1。

所以我的用例就像如果我读取值 Long,我需要创建 Long.class,如果我读取 String,然后是 String.class。

Class cls = Class.forName("java.lang.Long);,然后我可以将 cls 用于我自己的目的。

我可以通过使用上述数据类型的枚举来实现这一点,只要我从数据库中读取值,我就会将值传递给枚举以获取 class 类型。 但我不知道它是否有效。 Java 中是否存在任何方法,对于给定的字符串(没有完全限定的名称),它应该返回 class 类型。

存储对 Class object 的引用是有效的,但使用 Class object 进行反射可能会很昂贵。 如果您只是使用 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); //etc

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM