-
class 中有些不被使用的import packages. 这些packages会有什么影响?5
在java class 中有些没被使用过的import packages. 这些packages会对性能有什么影响么?
这些没被使用的package会被classloader load么?谢谢!2009年3月05日 12:27
2个答案 按时间排序 按投票排序
-
采纳的答案
其实import了之后没用的话跟JVM啊classloader什么的完全没关系。
import语句只在编译时有效,编译过后不会带到class文件里的。所以import了之后用了的类的信息才会出现在编译出来的class文件里,没用的则不会出现。
有兴趣可以自己动手试试。//import java.util.regex.*; public class Test { public static void main(String[] args) { System.out.println("test"); } }
那行import无论被注释掉还是没有被注释掉,编译出来的class文件的内容都是这样的:(javap -private -s -verbose Test)Compiled from "Test.java" public class Test extends java.lang.Object SourceFile: "Test.java" minor version: 0 major version: 50 Constant pool: const #1 = Method #6.#15; // java/lang/Object."<init>":()V const #2 = Field #16.#17; // java/lang/System.out:Ljava/io/PrintStream; const #3 = String #18; // test const #4 = Method #19.#20; // java/io/PrintStream.println:(Ljava/lang/String;)V const #5 = class #21; // Test const #6 = class #22; // java/lang/Object const #7 = Asciz <init>; const #8 = Asciz ()V; const #9 = Asciz Code; const #10 = Asciz LineNumberTable; const #11 = Asciz main; const #12 = Asciz ([Ljava/lang/String;)V; const #13 = Asciz SourceFile; const #14 = Asciz Test.java; const #15 = NameAndType #7:#8;// "<init>":()V const #16 = class #23; // java/lang/System const #17 = NameAndType #24:#25;// out:Ljava/io/PrintStream; const #18 = Asciz test; const #19 = class #26; // java/io/PrintStream const #20 = NameAndType #27:#28;// println:(Ljava/lang/String;)V const #21 = Asciz Test; const #22 = Asciz java/lang/Object; const #23 = Asciz java/lang/System; const #24 = Asciz out; const #25 = Asciz Ljava/io/PrintStream;; const #26 = Asciz java/io/PrintStream; const #27 = Asciz println; const #28 = Asciz (Ljava/lang/String;)V; { public Test(); Signature: ()V Code: Stack=1, Locals=1, Args_size=1 0: aload_0 1: invokespecial #1; //Method java/lang/Object."<init>":()V 4: return LineNumberTable: line 3: 0 public static void main(java.lang.String[]); Signature: ([Ljava/lang/String;)V Code: Stack=2, Locals=1, Args_size=1 0: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream; 3: ldc #3; //String test 5: invokevirtual #4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V 8: return LineNumberTable: line 5: 0 line 6: 8 }
所以别在意,import多余的东西不会对运行性能带来影响。JVM根本不知道你import了哪些类,只知道你用了哪些类。
import多余的东西主要带来的影响是污染了当前编译单元(也就是单个Java源代码文件)的命名空间而已,名字冲突的可能性变大了而已。例如说package A里有MyClass,你当前的文件在package B里,也有MyClass,这个时候直接写MyClass就容易有歧义,需要写成完整的A.MyClass或B.MyClass来区分。只是这个问题而已。2009年3月05日 13:51
-
不会使用就不会被classloader load,你可以参考一下http://www.iteye.com/topic/332726,1.子系统(类装载在子系统)那部分
2009年3月05日 12:38
相关推荐
在描述中提到的“需要用到Python画图,做数据分析”,`six`虽然不直接提供绘图或数据分析的功能,但它可以帮助我们确保依赖的其他数据科学库(如`matplotlib`、`pandas`等)在Python 2和Python 3中都能正常工作,...
2.2.2.3.4 Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2.3 Sequence Diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2.4 Collaboration Diagrams ...
2. 创建Word模板:使用Microsoft Word创建一个包含占位符的.docx文件,这些占位符将在转换时被替换。 3. 加载模板:使用`IRemportContext`加载模板文件。 4. 填充数据:使用FreeMarker模板引擎将数据绑定到模板的...
3.2. Removed Deprecated Packages and Methods .................................................... 17 3.3. Java 8 (as well as 6 and 7) .....................................................................
3.2. Removed Deprecated Packages and Methods .................................................... 17 3.3. Java 8 (as well as 6 and 7) .....................................................................
3.12 Class...............................................................................................................................................26 3.13 Singular and aggregate types .............
import org.docx4j.openpackaging.packages.WordprocessingMLPackage; import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart; public class Docx4jExample { public static void main(String...
PEP 487: Simpler customization of class creation PEP 487: Descriptor Protocol Enhancements PEP 519: Adding a file system path protocol PEP 495: Local Time Disambiguation PEP 529: Change Windows ...
在这个例子中,我们将探讨如何使用JettyServer创建一个简单的Web服务器。 首先,我们需要在项目中引入Jetty的依赖库。如果你的项目是基于Maven的,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org....
在IT行业中,生成文档是日常工作中常见的任务,尤其在编程领域。Java作为一种广泛使用的编程语言,提供了多种方式来处理文档生成。本篇文章将深入探讨如何使用Java结合docx4j库来创建和操作Microsoft Word的.docx...
Table of Contents Preface, Notes, Licenses . . . . . . . . ....1. Licenses for Third-Party Components ....1.1. FindGTest.cmake License ....1.2. LPeg Library License ....1.3. LuaFileSystem Library License ....
Require Doctrine Base Class..............................................................................................21 Register Autoloader............................................................
1. **导入包(Import Packages)** - `import java.awt.Graphics;` - `Graphics` 类是用于在屏幕上绘制基本图形的工具类。 - `import java.awt.Toolkit;` - `Toolkit` 类提供了一些基本的工具方法,如获取屏幕...
为了让命令行工具可以在任何位置被调用,需要将其添加到系统的环境变量中: ```bash [root@localhost/]# echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile [root@localhost/]# source ~/.bash_...
32)..Changed: Descriptions of EurekaLog project options now list corresponding property names of TEurekaModuleOptions class. 33)..Changed: Default template of ...
标题“Java如何与脚本(JavaScript)之间相互调用二”主要探讨的是在Java应用程序中如何集成和调用JavaScript代码,以及反过来JavaScript如何调用Java的功能。这涉及到跨语言交互的技术,通常通过Java的ScriptEngine...
在IT行业中,尤其是在文档处理领域,`docx4j`是一个非常重要的库,它允许开发者通过编程方式操作Microsoft Office Open XML(OOXML)格式的文件,如.docx、.xlsx和.pptx等。本篇将详细介绍如何使用`docx4j`根据书签...
通过阅读和理解这些代码,你可以更好地掌握如何在实际项目中使用Jetty。 总结一下,Jetty作为一个强大的Servlet容器,提供了轻量级、快速和灵活的Web应用开发环境。通过学习如何配置和运行Jetty服务器,以及如何...
在这个例子中,当用户点击按钮时,`buttonPressHandler`函数会被触发,从而调用Android原生的`nativeFunction()`方法。记得在JavaScript代码中同步Android编译后的改动,通常通过`npx react-native run-android`命令...