为什么必须使用.class
Java来获取Class
对象?为什么不只是像Ruby中的类名?
我知道Ruby
而且Java
非常不同。但是.class
当您已经输入了类名时,实际上必须输入似乎是违反直觉的。
如果类上有静态方法,则键入MyClass.staticMethod()
,而不是MyClass.class.staticMethod()
。
这可能是没有意义的问题,但是我想看看是否有人可以启发我。
因为类和变量在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文件中的ed类之后命名变量呢?
...然后您添加了一个新导入,您的代码不再编译了?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句