当前位置:  开发笔记 > 编程语言 > 正文

为什么必须在Java中使用.class来获取Class对象?为什么不像Ruby中的类名?

如何解决《为什么必须在Java中使用.class来获取Class对象?为什么不像Ruby中的类名?》经验,为你挑选了1个好方法。

为什么必须使用.classJava来获取Class对象?为什么不像Ruby中的类名?

我知道Ruby并且Java非常不同.但是,.class当您已经输入类名时,实际上必须键入它似乎是违反直觉的.

如果类上有静态方法,则键入MyClass.staticMethod(),而不是MyClass.class.staticMethod().

这可能是一个毫无意义的问题,但我想知道是否有人可以启发我.



1> Philipp..:

因为类和变量不在Java中共享命名空间,这意味着您可以拥有与现有类同名的变量.这个说法:

String Integer = "Integer";

是完全合法的,Integer即使有一个类,Integer也会创建一个名为的新String变量.

一个示例显示使用类名作为Class对象将是不明确的:

Class Integer = "Integer".getClass(); 
System.out.println(Integer.getName());

这会打印"java.lang.Integer"还是"java.lang.String"?

但是,如果变量Class Integer只是影响定义class Integer

你认为阴影是好事吗?它经常造成混乱和令人讨厌的惊喜.但这当然值得商榷.此外,new Integer(42)(构造函数String(int)未定义)现在变为运行时错误而不是编译时错误.

但是,如果我们只是禁止在现有类之后命名变量呢?

标准库中有很多类.这确实会缩小可用变量名称的命名空间.

但是如果我们只禁止import在当前.java文件中编写的类之后命名变量呢?

...然后你添加一个新的导入,你的代码不再编译?

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有