Difference between Class and Class

It’s the same as with all generic and raw types:

Class          // An unknown class (raw type)
Class<?>       // An unknown class (generic version)
Class<String>  // The String class

In this special case there’s not much practical difference between Class and Class<?> because they both denote an unknown class. Depending on the existing declarations the compiler can demand a generic type instead of a raw type.

But: Since Java 1.5 you should use the generic form wherever possible. Class<?> clearly states that you mean “an unknown class”, Class<String> cleary states that you mean the String class. A raw Class could mean both.

In the end it makes not much of a difference to the compiler but it makes a huge difference in making the intentions of your code more understandable and maintainable.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)