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.
}

この問題への 1 つのアプローチは、変数の型ごとに 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 に答える
6
variable.getClass().getName();

Object#getClass()

このオブジェクトのランタイム クラスを返します。返された Class オブジェクトは、表されたクラスの静的同期メソッドによってロックされたオブジェクトです。

于 2013-04-02T17:34:17.183 に答える
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 に答える