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

Arjabbar

为什么必须使用.classJava来获取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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我必须在mongoDB查询中使用+

来自分类Dev

为什么我必须在学说关系中使用对象?

来自分类Dev

为什么在Flask应用程序开发中必须在PostgreSQL中使用SQLAlchemy?

来自分类Dev

为什么我必须在gulp中使用乙烯基源流?

来自分类Dev

当通过diff定义函数时,为什么必须在maple中使用unapply运算符?

来自分类Dev

为什么必须在基于范围的for循环中使用引用

来自分类Dev

为什么我必须在ggplot中使用aes_string()闪亮?

来自分类Dev

为什么我必须在docker-compose中使用volume指令

来自分类Dev

为什么我必须在 ES6 的地图闭包中使用 return ?

来自分类Dev

为什么我必须在这个回文检查中使用 return ?

来自分类Dev

为什么方法varargs必须在Java的单独块中?

来自分类Dev

为什么我们必须在Java脚本(Razor)中对C#代码使用引号

来自分类Dev

为什么我必须在jQuery查询后使用[0]

来自分类Dev

必须使用~~ ..dropbox-dist / dropboxd`运行dropbox,为什么不只是dropbox?

来自分类Dev

必须使用~~ ..dropbox-dist / dropboxd`运行dropbox,为什么不只是dropbox?

来自分类Dev

什么时候必须在测试中使用TestEntityManager?

来自分类Dev

我必须在ORACLE中使用什么Join?

来自分类Dev

什么时候必须在测试中使用TestEntityManager?

来自分类Dev

我必须在virtocommerce中使用的基本URL是什么?

来自分类Dev

为什么必须在Angular 2应用程序中使用所有带有Component选择器的组件?

来自分类Dev

为什么我必须在正则表达式的正则表达式中使用replace?

来自分类Dev

我遇到了一些 C++ 代码。为什么我们必须在块中使用 *this 而不是 this?

来自分类Dev

while循环读取命令是打印位置,而不只是文件名-这是为什么?

来自分类Dev

javax.mail.SendFailedException-为什么不只是SendException?

来自分类Dev

为什么必须在C ++类定义中声明方法?

来自分类Dev

为什么必须在类中调用_internal()?

来自分类Dev

为什么必须在onCreate中初始化对象?

来自分类Dev

为什么在Python中不只是__new__而不是__new__和__init__?

来自分类Dev

为什么我们总是必须在C编程中使用fgetc命令而不是fscanf来执行相同的操作,但是会打印出奇怪的结果?

Related 相关文章

  1. 1

    为什么我必须在mongoDB查询中使用+

  2. 2

    为什么我必须在学说关系中使用对象?

  3. 3

    为什么在Flask应用程序开发中必须在PostgreSQL中使用SQLAlchemy?

  4. 4

    为什么我必须在gulp中使用乙烯基源流?

  5. 5

    当通过diff定义函数时,为什么必须在maple中使用unapply运算符?

  6. 6

    为什么必须在基于范围的for循环中使用引用

  7. 7

    为什么我必须在ggplot中使用aes_string()闪亮?

  8. 8

    为什么我必须在docker-compose中使用volume指令

  9. 9

    为什么我必须在 ES6 的地图闭包中使用 return ?

  10. 10

    为什么我必须在这个回文检查中使用 return ?

  11. 11

    为什么方法varargs必须在Java的单独块中?

  12. 12

    为什么我们必须在Java脚本(Razor)中对C#代码使用引号

  13. 13

    为什么我必须在jQuery查询后使用[0]

  14. 14

    必须使用~~ ..dropbox-dist / dropboxd`运行dropbox,为什么不只是dropbox?

  15. 15

    必须使用~~ ..dropbox-dist / dropboxd`运行dropbox,为什么不只是dropbox?

  16. 16

    什么时候必须在测试中使用TestEntityManager?

  17. 17

    我必须在ORACLE中使用什么Join?

  18. 18

    什么时候必须在测试中使用TestEntityManager?

  19. 19

    我必须在virtocommerce中使用的基本URL是什么?

  20. 20

    为什么必须在Angular 2应用程序中使用所有带有Component选择器的组件?

  21. 21

    为什么我必须在正则表达式的正则表达式中使用replace?

  22. 22

    我遇到了一些 C++ 代码。为什么我们必须在块中使用 *this 而不是 this?

  23. 23

    while循环读取命令是打印位置,而不只是文件名-这是为什么?

  24. 24

    javax.mail.SendFailedException-为什么不只是SendException?

  25. 25

    为什么必须在C ++类定义中声明方法?

  26. 26

    为什么必须在类中调用_internal()?

  27. 27

    为什么必须在onCreate中初始化对象?

  28. 28

    为什么在Python中不只是__new__而不是__new__和__init__?

  29. 29

    为什么我们总是必须在C编程中使用fgetc命令而不是fscanf来执行相同的操作,但是会打印出奇怪的结果?

热门标签

归档