Puede crear una Wrapper
clase que pueda aceptar PaymentChangeMaintenanceFieldsV214Type
o PaymentChangeMaintenanceCommonFieldsV214Type
(o A
y B
en el código de prueba aquí), y delegue sus llamadas a los objetos subyacentes.
Cada vez que recibe una instancia de A
o B
construye una instancia de a Wrapper
y la usa.
De esta manera, la duplicación de código se limita a Wrapper
:
import java.util.Random;
public class Main {
private final Random rand = new Random();
public static void main(final String[] args) {
new Main().test();
}
void test(){
for (int i = 0; i < 10 ; i++){
Object obj = getData(); //obj can be either A or B
Wrapper w = new Wrapper(obj); //construct a Wrapper
System.out.println(w.getName()); //use it
}
}
Object getData(){ //generate objects for testing
return rand.nextBoolean() ? new A() : new B(); // returns A half the times
}
}
class Wrapper {
Object obj;
Wrapper(Object obj){ //throw an exception if obj is not an A or B
this.obj = obj;
}
String getName(){
return obj instanceof A ? ((A)obj).getName() : ((B)obj).getName() ;
}
}
//two classes implementing the same method without having a common interface
class A {
String getName() { return getClass().getSimpleName(); }
}
class B {
String getName() { return getClass().getSimpleName(); }
}
Al crear un contenedor apropiado, puede hacer que su método acepte ambos tipos cambiando una línea:
MyWrapper recentPcmFieldType = new MyWrapper(getData());
Al intentar implementar una aplicación springboot en un tomcat externo, no puedo implementarlo. En el pom.xml, si excluyo la dependencia de tomcat, entonces no estoy enfrentando un error de tiempo de compilación. Desde que he usado ...
Tengo un método que intento llamar dinámicamente. Ese método tiene un argumento 'stringValue'. El método que estoy tratando de invocar es en la clase padre (receptores ??). No puedo entender cómo llegar ...
Estoy intentando que la autenticación SSL bidireccional funcione para un cliente de servicio web JAX-WS en Google App Engine. Estoy relativamente seguro de que puedo configurar la clave privada del cliente enviando a un BindingProvider ...
Tengo el siguiente código: public List <String> myMethod () {.. ...... Map <String, Module> m1 = new HashMap <> (); Map <String, Module> m2 = new HashMap <> (...