在Java中获取typeof

我是一个Java新手。 我试图找出一个数字是否是一个像这样的Double:

if ( typeof ( items.elementAt(1) )== Double ) { sum.add( i, items.elementAt(1)); } 

将不胜感激,如果有人可以告诉我如何重新排列语法,使其正常工作。

尝试这个:

 if (items.elementAt(1) instanceof Double) { sum.add( i, items.elementAt(1)); } 

reflection速度较慢,但​​是当你想知道是狗还是猫,而不是动物的情况时。 所以你会这样做:

 if(null != items.elementAt(1) && items.elementAt(1).getClass().toString().equals("Cat")) { //do whatever with cat.. not any other instance of animal.. eg. hideClaws(); } 

不说上面的答案是行不通的,除了零检查部分是必要的。

另一种解决方法是使用generics,并保证具有Double作为项目的任何元素。

 List<Double> items = new ArrayList<Double>(); 

使用正则expression式来实现这个任务。 请参考下面的代码。

 public static void main(String[] args) { try { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Enter your content: "); String data = reader.readLine(); boolean b1 = Pattern.matches("^\\d+$", data); boolean b2 = Pattern.matches("[0-9a-zA-Z([+-]?\\d*\\.+\\d*)]*", data); boolean b3 = Pattern.matches("^([+-]?\\d*\\.+\\d*)$", data); if(b1) { System.out.println("It is integer."); } else if(b2) { System.out.println("It is String. "); } else if(b3) { System.out.println("It is Float. "); } } catch (IOException ex) { Logger.getLogger(TypeOF.class.getName()).log(Level.SEVERE, null, ex); } }