25

在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?).
4

7 回答 7

27

根据您的示例,您似乎想要获取变量持有的类型,而不是声明的变量类型。所以我假设如果Animal animal = new Cat("Tom");你不想Cat得到Animal

要仅获取名称而不使用包部分使用

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

除此以外

String name = theVariable.getClass().getName(); //to get full.package.name.of.Cat
于 2013-04-02T17:36:42.843 回答
13
System.out.println(theVariable.getClass());

阅读javadoc

于 2013-04-02T17:32:22.130 回答
6

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

System.out.println(variable.getClass());
于 2013-04-02T17:33:04.417 回答
6
variable.getClass().getName();

对象#getClass()

返回此 Object 的运行时类。返回的 Class 对象是被表示类的静态同步方法锁定的对象。

于 2013-04-02T17:34:17.183 回答
4
public static void printVariableType(Object theVariable){
    System.out.println(theVariable.getClass())
}
于 2013-04-02T17:32:51.230 回答
4

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

Class objClass = obj.getClass();  
System.out.println("Type: " + objClass.getName());  
于 2013-04-02T17:34:03.570 回答
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()
于 2021-05-01T13:17:55.713 回答