• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

What is meant by .class ?

 
Mike Curwen
Ranch Hand
Posts: 3695
IntelliJ IDE Java Ubuntu
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
In methods that require a parameter of type java.lang.class, I've seen the following syntax...
So is saying:
java.lang.String.class
kind of like a shortcut for saying:
Class.forName("java.lang.String")

?
 
Jim Yingst
Wanderer
Sheriff
Posts: 18671
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Yes. It's called a class literal. Looks like a static field or something but isn't (as you can determine via reflection if so inclined). The compiler interprets it as a direct reference to a particular Class object, the same way "foo" is a direct reference to a String object with contents f-o-o, without any visible constructor or method call. Interestingly, you even have Class objects for
int.class
void.class
These are useful for things like specifying the return type of a method when using reflection (which wants to use Class objects for everything, even things that aren't anything.)
I'm mildly disappointed to see there's no null.class, even though I can't (yet) imagine what we could possibly use it for. I'll think of something...
[ May 20, 2003: Message edited by: Jim Yingst ]
 
Jasper Vader
Ranch Hand
Posts: 57
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
what is reflection?
 
John Lee
Ranch Hand
Posts: 2545
 
It is sorta covered in the JavaRanch Style Guide.
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic