java – ObjectClass.class变量在哪里定义/初始化?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – ObjectClass.class变量在哪里定义/初始化?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1376字,纯文字阅读大概需要2分钟。
内容图文
![java – ObjectClass.class变量在哪里定义/初始化?](/upload/InfoBanner/zyjiaocheng/817/09ed6d79632e448ca318149274e96f30.jpg)
考虑下面的示例代码
public class Test {
public static void main(String args[]) {
Test t = new Test();
Class c2 = Test.class;
System.out.println(c2);
}
}
Test.class静态计算并返回编译时Class对象.查看Test.class语法,看起来变量类的类型为java.lang.Class,并且是静态和公共的.我的问题是这个变量定义在哪里?它在Test类中不存在(因为我没有声明它),它也不在java.lang.Object类中.
我看到一个类似的方法公共最终本机类<?>的getClass();.它存在于java.lang.Object中,是一个本机java方法.此方法返回对象的运行时类.
所以我的问题是这个公众&静态类变量定义了吗?(如果我弄错了请纠正我)是否还有一些原生实现?这是在编译时设置的,静态不需要创建类实例.所以即使这是一些本机实现,它是由java.lang.Object中的registerNatives()方法初始化的?
解决方法:
这些被称为类文字,并由语言本身定义为JLS §15.8.2(没有“类成员”):
A class literal is an expression consisting of the name of a class, interface, array, or primitive type, or the pseudo-type
void
, followed by a ‘.’ and the tokenclass
.The type of
C.class
, whereC
is the name of a class, interface, or array type (§4.3), isClass<C>
.The type of
p.class
, wherep
is the name of a primitive type (§4.2), isClass<B>
, whereB
is the type of an expression of typep
after boxing conversion (§5.1.7).The type of
void.class
(§8.4.5) isClass<Void>
.
这些结构本质上构建在语言中的一个迹象是它们甚至可以与原语一起使用!
System.out.println(int.class);
System.out.println(double.class);
// etc.
内容总结
以上是互联网集市为您收集整理的java – ObjectClass.class变量在哪里定义/初始化?全部内容,希望文章能够帮你解决java – ObjectClass.class变量在哪里定义/初始化?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。