Java - die Signatur einer Methode in einer Schnittstelle, und das gleiche für seinen Proxy-Implementierung

Ich bin auf der Suche nach einem Weg zum extrahieren der Essenz der Signatur in Java. Der Grund ist, dass ich verwenden möchten, für die Signatur wird ein eindeutiger Schlüssel in einer Map für meine java.lang.reflektieren.Proxys.

Mit diesem code:

public interface MyInterface {
  public int compute(String s);
}

...
public static void main (String... args) throws Exception {
  InvocationHandler handler = ...;
  MyInterface i = (MyInterface) Proxy.newProxyInstance(
      Beans.class.getClassLoader(),
      new Class<?>[] { MyInterface.class },
      handler);

  Method m1 = MyInterface.class.getMethod("compute", String.class);
  Method m2 = i.getClass().getMethod("compute", String.class);
  System.out.printf("%b%f", m1.equals(m2));
}

Das Ergebnis ist offensichtlich falsch.

Dieser code ist nicht der code, den ich verwenden werde, weil ich es brauche, innerhalb der InvocationHandler, aber ich Frage mich, wenn über die Proxy-Implementierungen und die Schnittstelle immer method.getName() und method.getParameterTypes() genug ist, oder sollte ich verwenden method.getTypeParameters() und method.getParameterAnnotations() auch?

Kurz: wie man eine Signatur der Methode, die für ein interface und die java.lang.reflektieren.Proxy-Implementierungen?

  • Brauchen Sie, um zu speichern Sie Ihre proxies in einer Karte? Sie sind nicht teuer zu erstellen, ist es vielleicht nicht der Mühe Wert, um cache Ihnen.
  • Nein, ich glaube nicht, meine proxies: nur die Methoden, so vermeide ich eine loooooooong wechseln.
  • Was ich meine ist, warum nicht erstellen Sie den Proxy jedes mal, wenn Sie es brauchen, anstatt diese durch Signatur der Methode?
Schreibe einen Kommentar