我正在构建一个小型的Android应用程序,但这更像是一个Java问题,而不是一个Android问题。查看教程中的行看起来像:
startService(new Intent(this, MyService.class));
“MyService.class”字段到底代表什么?这仅仅是对模板类的引用吗?
感谢。
答案 0 :(得分:5)
安迪的答案肯定是正确的,但我想稍微扩展一点。
.class
是获取Class对象实例的特殊语法。当只有类型可用且没有相关对象的实例时,可以使用它。它可以与任何具体类型名称一起使用,包括数组和基元。例如,int.class
有效。
获取Class对象的这种方式(以及其他方式)记录在旧的Sun reflection API docs中。
特殊.class
语法经常出现在惯用语中,作为通用代码中的“类型标记”。使用.class
获得的类文字在“在传递编译时和运行时类型信息的方法之间传递”时称为类型标记(Joshua Bloch's Effective Java 2e,第142页)。
答案 1 :(得分:3)
是的,MyService.class
返回一个表示MyService类的Class对象。 Intent使用它来识别您打算启动的服务或活动。
答案 2 :(得分:1)
MyService.class
允许您单独从类名中获取描述MyClass类的Class对象(而不是让类的实例请求object.getClass()
)。
答案 3 :(得分:1)
在JVM中,当加载类时,类型为Class
的对象表示内存中已加载的类。 com.abc.MyClass.class
是一个文字表达式,表示类Class
的{{1}}对象。
如果您有对类的对象的引用,也可以通过调用com.abc.MyClass
方法获得相同的Class
对象。
myClassReference.getClass()
对象可用于查找有关类结构的信息,访问字段,调用方法以及使用Java Reflection API实例化类的对象。