java - 从字符串的值查找对象的类型

标签 java

我需要一种方法来返回对象的类型(作为字符串或对象的类,以更简单的形式)给定一个带有值的字符串。 我可以用我想要的每种类型来解析它,但是存在与此相关的问题(例如 int 也可以解析为 long,float 可以解析为 double)。这是我的草图:

private String typeOf(String test) {
    if (test == "true" || test == "false")
        return "boolean";
    else if (// its a number)
        // figure out a way to parse all number types?
        // return corresponding type
    else
        // can't be parsed with any boolean or number types... just a string
        return "string";
}

我检查的类型有:String、long、int、short、byte、byte[]、float 和 double。 请记住,我需要 SPECIFIC 类型才能完成该程序的成败功能。如有任何帮助,我们将不胜感激。

我正在尝试创建一个命名二进制标签(规范 here ),它保存用户输入(JOptionPane - 输入对话框)给出的特定类型的数据。为了制作正确类型的标签,我需要知道给定数据的类型。 (有没有一种方法可以从用户那里获取输入,从而完全避免字符串问题?)首先使用字符串已成为我问题的主要根源。

最佳答案

启动字符串检查是不正确的。除此之外,请考虑不同的数据类型及其可能的值。

int 或 Integer 的可能值都在 long 的范围内。花车和 double 也是如此。您将需要找出哪个数据类型的范围是哪个数据类型的子集,并按该顺序进行测试。作为示例,这里是一个用于测试整数和长整型的快速片段。

private String typeOf(String suppliedTest) {
    String test = suppliedTest.strip().toLower();
    if (test.equals("true") || test.equals("false"))
        return "boolean";
    try {
        int testInt = Integer.parseInt(test);
        return "integer";
    } catch (NumberFormatException e) {}
    try {
        long testLong = Long.parseLong(test);
        return "long";
    catch (NumberFormatException e) {}
    ...
}

关于java - 从字符串的值查找对象的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22119402/

相关文章:

java - Lombok @NonNull 与 Validate.notNull

java - 有什么方法可以区分一个类是来自 Groovy/Grails 还是原始 Java?

Java:迭代器、可迭代器——接口(interface)还是抽象类?

java - 项目缺少所需的库 : 'forms-1.3.0.jar' and 'miglayout15-swing.jar'

java - 如何连接Ui信息和域信息

java - Android Camera2 API Flash 不适用于银河设备

java - ANTLR4 Lexer getTokens() 返回 0 个标记

java - 浏览器错误 : PrimeFacesExt is not defined

java - Android 服务可以有多个权限吗?

java - 查找段落中句子的起点和终点斯坦福CoreNLP