【问题标题】:Checking if an object is an instance of a specific datatype given by a user检查对象是否是用户给定的特定数据类型的实例
【发布时间】:2014-11-13 18:01:30
【问题描述】:

我正在努力检查一个对象是否是由用户输入给出的特定数据类型的实例。例如:

Object a = new Object();
String userDataType = JOptionPane.showInputDialog("What kind of datatype do you want to check?");
if(Object a instanceof userDataType))  doStuff(); 

我尝试了反思,但我仍然无法理解这一点......

提前谢谢你!

【问题讨论】:

  • 您创建了一个Object 类型的对象,因此您显示的代码毫无意义——这是它唯一的类型。如果您想询问 any 对象,只需点击 obj.getClass().getName(),同时注意即使“String”之类的内容也可能是 java.lang.String 或 some.other.package.String,所以只有完全限定的类型才有意义。
  • 实际上有多少个选项?也许你可以编写一个所有可用数据类型的枚举,并通过组合框选择它。

标签: java class types


【解决方案1】:

尝试与对象的类的getSimpleName() 进行比较,它只返回不合格的类名(没有包名)。

Object o;
String userInput;
if (o.getClass().getSimpleName().equalsIgnoreCase(userInput))

【讨论】:

    【解决方案2】:

    instanceof 关键字通过将其与实际对象类型而不是字符串进行比较来工作。例如:

    Object a = getUseObject();
    if( a instanceof String )  doStuff();  // if a is actually a String
    else if (a instanceof double[]) doStuff();  // if a is actually an array of doubles
    

    【讨论】:

      【解决方案3】:

      将其转换为您希望检查的数据类型,根据需要处理异常。

      【讨论】:

        猜你喜欢
        • 2017-12-06
        • 2015-08-03
        • 2013-01-14
        • 1970-01-01
        • 1970-01-01
        • 2014-07-28
        • 2012-11-26
        • 1970-01-01
        相关资源
        最近更新 更多