安卓在Java中,什么是类的引用。你喜欢什么?
我正在构建一个小的Android应用程序,但这更像是一个Java问题,而不是Android问题。浏览教程时,有几行代码如下所示:
startService(new Intent(this, MyService.class));
“MyService.class”字段究竟代表什么?这只是对模板类的引用吗
谢谢
你可以在下面搜索框中键入要查询的问题!
我正在构建一个小的Android应用程序,但这更像是一个Java问题,而不是Android问题。浏览教程时,有几行代码如下所示:
startService(new Intent(this, MyService.class));
“MyService.class”字段究竟代表什么?这只是对模板类的引用吗
谢谢
# 1 楼答案
是,
MyService.class
返回表示类MyService的类对象。意图使用它来确定您打算启动的服务或活动# 2 楼答案
安迪的回答肯定是正确的,但我想在这一点上再进一步
.class
是获取类对象实例的特殊语法。当只有类型可用且周围没有相关对象的实例时,可以使用它。它可以与任何具体的类型名一起使用,包括数组和原语。例如,int.class
是有效的获取类对象的这种方法(以及其他方法)记录在旧的Sun reflection API docs中
特殊的
.class
语法通常在习惯用法中作为泛型代码中的“类型标记”出现。当“在传递编译时和运行时类型信息的方法之间传递”时,使用.class
获得的类文本称为类型标记(Joshua Bloch's Effective Java 2e,第142页)# 3 楼答案
MyService.class
允许您仅从类名获取描述MyClass类的类对象(而不是让类的实例请求object.getClass()
)# 4 楼答案
在JVM中,加载类时,
Class
类型的对象表示内存中加载的类com.abc.MyClass.class
是一个文字表达式,表示类com.abc.MyClass
的Class
对象如果有对类的对象的引用,也可以通过调用
myClassReference.getClass()
方法来获得相同的Class
对象Class
对象可用于查找有关类的结构、访问字段、调用方法以及使用Java反射API实例化类的对象的信息