java – 导入通配符是否一直导入所有内容?
我正在研究一个小程序,并使用数组,所以我做了:
import java.util.Arrays; 后来我开始扩展我以前做过的事情并决定我想从用户那里获得输入,所以在那一点上我添加了: import java.util.Scanner; 现在出现了一个想法.我知道我可以这样做: import java.util.* 然后我只需要1个导入行而不是两个(或者我最终需要的是多少),但导入中的通配符是否意味着它将从该包导入所有内容,无论是否需要,或者只是选择性功能被拉? 我的直觉是编写更多的代码,只包含我知道我需要的软件包,但如果没有区别,为什么有人会导入更多级别/软件包呢? (我宁愿懒惰也少写代码) 解决方法
清楚导入正在做什么.它并不意味着加载.class文件和字节代码.
所有导入都允许您使用短类名来保存键入. 因此,如果在代码中使用java.sql.PreparedStatement,则在导入java.sql.PreparedStatement时可以使用PreparedStatement.您可以永久编写Java代码,而无需使用单个import语句.你只需要拼出所有完全解析的类名. 并且类加载器仍将在运行时首次使用来自.class文件的字节代码. 它可以节省您的击键次数.就这样. 它与类加载无关. 就个人而言,我更愿意避免使用*表示法.我拼写每一个导出.我认为它更好地记录了我的意图.我的IDE是IntelliJ,所以我要求它动态插入导入. 懒惰通常是开发人员的一种美德,但在这种情况下并非如此.拼出它们并让你的IDE单独为它们插入它们. 如果你输入 import java.util.*; 您可以通过短名称来参考扫描仪和列表. 但是如果你想为FutureTask和LinkedBlockingQueue做同样的事情,你将不得不这样做: import java.util.concurrent.*; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |