38

In Java, is it possible to print the type of value held by variable?

public static void printVariableType(Object theVariable){
    //for example, if passed argument is "abc", print "String" to the console.
}

One approach to this problem would be to use an if-statement for each variable type, but that would seem redundant, so I'm wondering if there's a better way to do this:

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?).
1

7 Answers 7

39

I am assuming that in case of Animal myPet = new Cat(); you want to get Cat not Animal nor myPet.

To get only name without package part use

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

otherwise

String name = theVariable.getClass().getName(); //to get full.package.name.of.Cat
Sign up to request clarification or add additional context in comments.

Comments

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

Read the javadoc.

Comments

6

You can use the ".getClass()" method.

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

Comments

6
variable.getClass().getName();

Object#getClass()

Returns the runtime class of this Object. The returned Class object is the object that is locked by static synchronized methods of the represented class.

Comments

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

Comments

4

You can read in the class, and then get it's name.

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

Comments

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()

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.