This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
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")
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 ]