打印Java变量的类型

时间:2013-04-02 17:31:14

标签: java

在Java中,是否可以打印变量的类型?

public static void printVariableType(Object theVariable){
    //print the type of the variable that is passed as a parameter
    //for example, if the variable is a string, print "String" to the console.
}

解决这个问题的一种方法是对每个变量类型使用if语句,但这似乎是多余的,所以我想知道是否有更好的方法来执行此操作:

if(theVariable instanceof String){
    System.out.println("String");
}
if(theVariable instanceof Integer){
    System.out.println("Integer");
}
// this seems redundant and verbose. Is there a more efficient solution (e. g., using reflection?).

7 个答案:

答案 0 :(得分:12)

根据您的示例,您似乎希望获得由变量保持的类型,而不是声明的变量类型。所以我假设在Animal animal = new Cat("Tom");的情况下你想要Cat而不是Animal

仅获取没有包装部件的名称

String name = theVariable.getClass().getSimpleName() //to get Cat

,否则

String name = theVariable.getClass().getName(); //to get your.package.Cat

答案 1 :(得分:5)

System.out.println(theVariable.getClass());

阅读the javadoc

答案 2 :(得分:5)

您可以使用".getClass()"方法。

System.out.println(variable.getClass());

答案 3 :(得分:4)

variable.getClass().getName();

Object#getClass()

  

返回此Object的运行时类。返回的Class对象是   由静态同步方法锁定的对象   代表班级。

答案 4 :(得分:3)

public static void printVariableType(Object theVariable){
    System.out.println(theVariable.getClass())
}

答案 5 :(得分:3)

你可以在课堂上阅读,然后得到它的名字。

Class objClass = obj.getClass();  
System.out.println("Type: " + objClass.getName());  

答案 6 :(得分:0)

public static void printVariableType(Object theVariable){
    System.out.println(theVariable);        
    System.out.println(theVariable.getClass()); 
    System.out.println(theVariable.getClass().getName());}



   ex- printVariableType("Stackoverflow");
    o/p: class java.lang.String // var.getClass()
         java.lang.String       // var.getClass().getName()