Java:用于加载类的星号

时间:2010-04-03 22:36:07

标签: java memory class

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

例如:

import java.awt.Graphics;

VS

import java.awt.*;

6 个答案:

答案 0 :(得分:16)

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

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

答案 1 :(得分:6)

简单地说:不。

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

答案 2 :(得分:4)

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

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

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

答案 3 :(得分:1)

你的意思是明星进口吗? import pack.*;

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

答案 4 :(得分:1)

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

答案 5 :(得分:0)

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

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