Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In Java, what does a reference to Class.class do?

Tags:

java

android

I'm building a small Android application, but this is more of a Java question than an android question. Looking through the tutorials there are lines that look like:

startService(new Intent(this, MyService.class));

what exactly does the "MyService.class" field represent? Is that just a reference to the class for a template?

Thanks.

like image 505
Eric Conner Avatar asked Jul 20 '10 23:07

Eric Conner


1 Answers

Andy's answer is definitely correct, but I want to expand on the point a little.

.class is a special syntax for obtaining an instance of a Class object. It can be used when only the type is available and no instance of the related object is around. It can be used with any concrete type name, including arrays and primitives. For instance, int.class is valid.

This way (and other ways) to get a Class object are documented in the old Sun reflection API docs.

The special .class syntax often appears in idiomatic usage as a "type token" in generic code. A class literal obtained with .class is called a type token when "passed among methods to communicate both compile-time and runtime type information" (Joshua Bloch's Effective Java 2e, p. 142).

like image 113
Dan LaRocque Avatar answered Oct 26 '22 17:10

Dan LaRocque