yo creo que hay 2 maneras:
1) Definir una interfaz de cliente, e implementa diferentes clases, por ejemplo: IndiaClient y Country2Client; Entonces
interface Client {...}
class IndiaClient implements Client {...}
class Country2Client implements Client {...}
Client client;
if (country==india){
client = new IndiaClient();
) else{
client = new Country2Client();
}
2) Mantenga su camino con el mismo nombre de la clase en 2 archivos jar diferentes, pero todavía se necesita un interfaz o superclase, y utilizar diferentes cargadores de clases para cargar sus clases de clientes:
interface IClient {...}
class Client implements IClient {...} // in jar1
class Client implements IClient {...} // in jar2
Class<IClient> clientClass;
if (country==india){
clientClass = classLoader1.loadClass("package.Client");
) else{
clientClass = classLoader2.loadClass("package.Client");
}
IClient client = clientClass.newInstance();
- En cuanto a cómo obtener la clase Loaders, puede consultar los documentos JDK.
Siempre suponiendo que se encuentran en DIFERENTES paquetes. – bmargulies