Java导入句子

时间:2013-07-17 05:39:17

标签: java import

我写了这个命令行:

Field [] field=Hello_World.class.getFields();

我使用import java.lang.*; sentnce,假设导入lang包中的所有类。即便如此,当我写这个命令行时,它会给我一个错误并建议使用以下导入语句:import java.lang.reflect.Field;对于我的下属,从lang包中导入speciefic字段类。我不明白为什么我的原始导入句子没有解决这个问题(它应该导入所有的类,不是吗?)

4 个答案:

答案 0 :(得分:1)

你有两个误解:

  • 您无需导入java.lang。它是隐式导入的。
  • 导入xxx.*仅导入xxx中的类和接口。它不会导入xxx的任何“子包”;例如xxx.yyyxxx.yyy.zzz

所以你应该做的就是摆脱import java.lang.*,然后添加import java.lang.reflect.*


除此之外:很多人(包括我自己)都认为“明星”导入类和接口是一个坏主意。它可能导致源级脆弱;例如如果有人意外地将某个类添加到某个包中,该类与从另一个包导入的同名类冲突。

答案 1 :(得分:0)

java.lang。*导入lang包的所有类,但不导入其子包子类。所以要导入reflect的子类,你必须导入java.lang.reflect.Field。

答案 2 :(得分:0)

是的,这就是包导入在Java中工作(并且应该起作用)的方式。例如,执行import javax.swing。;将导入javax.swing。中的所有类,但不导入子包及其类。

答案 3 :(得分:0)

反射不在lang。*包中。它的子包到语言包。你需要导入java.lang.reflect。*它会工作。由于其他答案暗示导入不导入子包。