繁体   English   中英

Java:用于加载类的星号

[英]Java: asterisk for loading classes

是否直接加载所需的类是减少Java应用程序整体内存使用量的好方法?

例如:

import java.awt.Graphics;

VS

import java.awt.*;

不。您应该只导入所需的类,以便程序员清楚您的班级实际需要哪些类。

Import语句只是告诉编译器在哪里查找你正在使用的类 - 这并不意味着包中的所有类都被加载到内存中。

简单地说:不。

import语句不会转换为任何形式的字节码。 它们只是避免使用(丑陋!)完全限定类型名称的快捷方式。

正如其他人所说,导入仅由编译器使用。 您可以使用所有内容的全名来编写整个程序而无需任何导入,但这很快就会变得相当大。

java.io.InputStream is = new java.io.FileInputStream(new java.io.File("foo"));

星型导入是为了减少手动编写所有import语句的繁琐,但导致导入的内容太多 ,因此编译器有多种可能性。 像Eclipse这样的现代IDE因此逐个导入所有内容,因此不会发生这种情况。

你的意思是像import pack.*;这样的明星进口import pack.*;

在Java中,它与内存使用无关, import仅用于更改引用类的方式。 但是,有关明星进口的编码实践问题。

我通常使用完全限定的类型名称,而不是如此大的语句。 包存在是有原因的,这是因为该包的开发人员可能用他不喜欢的各种垃圾填充他的包命名空间,而你只想要那个类。

明确导入所需的类与执行* -import无关。 JVM仅加载您最终使用的内容,仅此而已。

话虽如此,明确导入你的类是一个很好的软件设计决策(* - import是不知道或不关心良好的软件设计原则的懒人的标志......我不是在开玩笑,我已经死了很严肃。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM