我在不同的 jar 中有两个具有相同名称和相同包结构的 classes。是否可以专门从 jar 中选择 class?
I have two classes with same name and same package structure in different jars. Is it possbile to choose a class from jar specifically?
如前所述,我有两个 classes,它们在不同的 jar 中具有相同的名称和相同的包结构。
让我们说
在 jar1 中,我的 class 是 a.b.c.ClassName 和
在 jar2 中,我的 class 是 a.b.c.ClassName.
我有不同的构造函数来区分 classes。
我的问题是,是否可以基于构造函数创建对象。
例如,
if(condition){
a.b.c.ClassName obj = new a.b.c.ClassName(Param);
}
else{
a.b.c.ClassName obj = new a.b.c.ClassName(Param, AnotherParam);
}
谢谢,
My question is, Is it possible to create object based on constructor.
我带你去问 Java 是否会根据 class 的哪个版本具有与给定签名匹配的构造函数来选择从哪个 jar 加载 class。不,不会。 Java 将在 class 路径中的目录和 jar 中按顺序查找指定的 class,并将使用它找到的第一个。
可以想象,您可以编写自定义类加载器,帮助您根据可用构造函数的签名选择要加载的 class 版本,但此类功能不会自动触发,因为您似乎想要。 Java 在考虑其中可用的构造函数之前加载 class。您将需要手动加载 class ,并且可能需要以反射方式对其进行实例化。你的问题不会就此结束。所有这一切几乎肯定比它值得的麻烦多得多。
写一个子class而不是相同class的不同版本怎么样?
更改 pom.xml 中的依赖顺序。预先导入您想要的 jar。
如前所述,我有两个 classes,它们在不同的 jar 中具有相同的名称和相同的包结构。
让我们说
在 jar1 中,我的 class 是 a.b.c.ClassName 和
在 jar2 中,我的 class 是 a.b.c.ClassName.
我有不同的构造函数来区分 classes。
我的问题是,是否可以基于构造函数创建对象。 例如,
if(condition){
a.b.c.ClassName obj = new a.b.c.ClassName(Param);
}
else{
a.b.c.ClassName obj = new a.b.c.ClassName(Param, AnotherParam);
}
谢谢,
My question is, Is it possible to create object based on constructor.
我带你去问 Java 是否会根据 class 的哪个版本具有与给定签名匹配的构造函数来选择从哪个 jar 加载 class。不,不会。 Java 将在 class 路径中的目录和 jar 中按顺序查找指定的 class,并将使用它找到的第一个。
可以想象,您可以编写自定义类加载器,帮助您根据可用构造函数的签名选择要加载的 class 版本,但此类功能不会自动触发,因为您似乎想要。 Java 在考虑其中可用的构造函数之前加载 class。您将需要手动加载 class ,并且可能需要以反射方式对其进行实例化。你的问题不会就此结束。所有这一切几乎肯定比它值得的麻烦多得多。
写一个子class而不是相同class的不同版本怎么样?
更改 pom.xml 中的依赖顺序。预先导入您想要的 jar。