首页 > 解决方案 > 在类 org.demo.mypackage1.C 中可以通过它们的短名称访问什么而不编写任何导入?

问题描述

您有以下课程:

  org.demo.A
  org.demo.B
  org.demo.mypackage1.C
  org.demo.mypackage2.D

通过短名称选择类 org.demo.mypackage1.C 中可访问的所有类,而无需编写任何导入。

从列表中选择一个或多个选项

  org.demo.mypackage1.C
  java.lang.String
  org.demo.B
  org.demo.mypackage2.D
  java.util.Scanner
  org.demo.A

无论我选择什么,它都表明它不正确:-(请帮助! 在此处输入图像描述

标签: java

解决方案


我想你可能误解了你在测验中被问到的问题

您的第一个答案(来自您上面的评论)是

  • org.demo.A
  • org.demo.B
  • org.demo.mypackage2.D可以调用的前三个响应,因为在那里指定了完整的批处理地址

事实上,他们做不到。测验问题是:

选择在类 org.demo.mypackage1.C 中可以通过它们的短名称访问的所有类[and]而无需编写任何 imports

(强调补充。)

但是你说“因为那里指定了完整的批处理地址”。实际上,它没有“在那里指定”,因为您不允许这样import做。

由于A,BD都没有在C的包中声明(即在 中org.demo.mypackage1),所以它们不能用它们的简称来引用C


  • org.demo.mypackage1.C我们已经在这个包中,可以直接访问C

那是对的。


java.util.Scanner- 如果我们使用扫描仪,我们需要它

答案是,Scanner 如果C没有import.


  • java.lang.String没有必要

答案是String 可以C通过其短名称来引用,而无需import. 中的类和接口java.lang是隐式导入的1

1 - 如果您声明一个与 in 同名的顶级或内部类或接口,则更复杂java.lang;例如String。然后你的String类声明将隐藏Stringjava.lang... 中的声明,这可能会非常令人困惑。


推荐阅读