Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使包重定向到另一个包_Java_Package - Fatal编程技术网

Java 使包重定向到另一个包

Java 使包重定向到另一个包,java,package,Java,Package,我想使一个包重定向到另一个包。例如,我有一个名为“packageA”的包和另一个名为“packageB”的包,导入packageA将导入packageB。我希望能够做到这一点,而不复制包。另外,如果导入了packageA而不是packageB,是否有办法运行方法?简短回答:否 长答覆: 包是类的一部分,import语句是在编译时读取的,它们不会被解释。您需要的是一个扭曲的Java编译器。由于一些编译器是开源的,这可能是可以做到的,但不要指望找到这样的特性 备选答案:如果您使用的是Netbeans

我想使一个包重定向到另一个包。例如,我有一个名为“packageA”的包和另一个名为“packageB”的包,导入packageA将导入packageB。我希望能够做到这一点,而不复制包。另外,如果导入了packageA而不是packageB,是否有办法运行方法?

简短回答:否

长答覆: 包是类的一部分,
import
语句是在编译时读取的,它们不会被解释。您需要的是一个扭曲的Java编译器。由于一些编译器是开源的,这可能是可以做到的,但不要指望找到这样的特性


备选答案:如果您使用的是Netbeans、Eclipse等IDE,那么有很多重构工具可以帮助您将包名更改为另一个包名。

让我们看看import语句的工作原理:

首先,
import
只导入类或接口。它从不导入包。特别是

import java.util.*
导入名为
java.util
的包中的所有类和接口。这个包只是类和接口的容器,所以谈论“导入包”真的没有任何意义。包本身不是编译或运行的东西

话虽如此,谈论“重定向”没有任何意义,因为你要重定向到什么?如果要从“packageA”导入类,只需直接导入即可

类似地,从packageA导入一个类可以让您访问它的类和方法。由于该类位于packageA中,因此尝试从packageB导入它没有任何意义。即使packageB有一个同名的类,它们也是两个不同的类。事实上,这是Java包的主要原因:避免两个不同程序员编写的类的名称冲突


综上所述,您在使用“重定向导入”时遇到了什么问题?

Java没有这个“功能”。您为什么要这样做?您试图解决的真正问题是什么?我想让使用我的jar的人能够使用旧的包名和新的包名。这个类可以同时在两个包中吗?@Runemoro不,两个包中的两个类是两个不同的类。解决此问题的一种方法是在packageA中创建类
A
,在packageB中创建另一个名为
A
的类,该类扩展了
packageA.A