Hallo Leute,
Ich habe mal wieder eine Frage, zu welcher meine Google-Suchergebnisse unzureichend waren.
Kurzform der Problemstellung:
In unserem aktuellen Framework soll es eine Möglichkeit geben, eine bestimmte Implementierung der equals-Methode beim Programmstart zu verwenden/nutzen, wenn die Klasse mit einer bestimmten Annotation versehen worden ist.
Dabei sind die koknrete Implementierung oder Objekthierarchien der jeweiligen Klasse unbekannt. Ich weiß also auch nichts über die Oberklassen oder implementierten Interfaces bzw. ob solche überhaupt vorhanden sind
Ich habe in Java noch nie mit einer entsprechenden Mechanik gearbeitet - wohl aber in anderen Programmiersprachen. Dort wurden die entsprechenden Instanzen der Klasse zur Laufzeit mit einem Proxy versehen, der entweder Methodenaufrufe an das originale Objekt weiterleiten oder durch einen anderen Aufruf ersetzen.
Leider waren alle meine Versuche, etwas entsprechendes in Java umzusetzen nicht von Erfolg geprägt - meine Google-Suchen ebensowenig.
Daher wollte ich mal hier fragen, welchen Ansatz ich hier am besten verfolgen soll oder ob das so überhaupt möglich ist.
Noch als relevante Information: Wir haben die aktuellste Java-Version im Einsatz und wir nutzen Spring inklusive AOP. Allerdings habe ich persönlich bisher wenig mit Spring AOP gearbeitet. Generell "komme" ich aus einem anderen Programmiersprachenkontext - daher bitte ich mein ggf. vorhandenes Unwissen über die Java-Mechaniken zu entschuldigen und bitte Euch um Hilfe.
Liebe Grüße
PS: Ich habe folgenden Proxy in Java entwickelt, welcher die Mechanik bereits umsetzt. Allerdings erfordert dieser einen Default-Konstruktor, der nicht public sein darf. Das ist damit nicht zufriedenstellend für die aktuelle angestrebte Architektur. Da sollen nämlich solche Konstruktoren vermieden werden.
Ich habe mal wieder eine Frage, zu welcher meine Google-Suchergebnisse unzureichend waren.
Kurzform der Problemstellung:
In unserem aktuellen Framework soll es eine Möglichkeit geben, eine bestimmte Implementierung der equals-Methode beim Programmstart zu verwenden/nutzen, wenn die Klasse mit einer bestimmten Annotation versehen worden ist.
Dabei sind die koknrete Implementierung oder Objekthierarchien der jeweiligen Klasse unbekannt. Ich weiß also auch nichts über die Oberklassen oder implementierten Interfaces bzw. ob solche überhaupt vorhanden sind
Ich habe in Java noch nie mit einer entsprechenden Mechanik gearbeitet - wohl aber in anderen Programmiersprachen. Dort wurden die entsprechenden Instanzen der Klasse zur Laufzeit mit einem Proxy versehen, der entweder Methodenaufrufe an das originale Objekt weiterleiten oder durch einen anderen Aufruf ersetzen.
Leider waren alle meine Versuche, etwas entsprechendes in Java umzusetzen nicht von Erfolg geprägt - meine Google-Suchen ebensowenig.
Daher wollte ich mal hier fragen, welchen Ansatz ich hier am besten verfolgen soll oder ob das so überhaupt möglich ist.
Noch als relevante Information: Wir haben die aktuellste Java-Version im Einsatz und wir nutzen Spring inklusive AOP. Allerdings habe ich persönlich bisher wenig mit Spring AOP gearbeitet. Generell "komme" ich aus einem anderen Programmiersprachenkontext - daher bitte ich mein ggf. vorhandenes Unwissen über die Java-Mechaniken zu entschuldigen und bitte Euch um Hilfe.
Liebe Grüße
PS: Ich habe folgenden Proxy in Java entwickelt, welcher die Mechanik bereits umsetzt. Allerdings erfordert dieser einen Default-Konstruktor, der nicht public sein darf. Das ist damit nicht zufriedenstellend für die aktuelle angestrebte Architektur. Da sollen nämlich solche Konstruktoren vermieden werden.
Code:
public static Object createProxyOf(Object object) {
return Enhancer.create(object.getClass(), new MethodInterceptor() {
public Object intercept(Object o, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
if ("equals".equals(method.getName())) {
return checkEqualityOf(o, args[0]);
} else {
return methodProxy.invokeSuper(o, args);
}
}
});
}
Zuletzt bearbeitet: