Überschreiben-Klasse in java

Angenommen ich habe ein Projekt K

K hängt lib.jar

In lib.jar gibt es eine Klasse namens x.y.z.Foo

Ist, wenn ich die gleiche Klasse x.y.z.Foo im K , dann in diesem Projekt, wenn ich erstellen Sie eine Instanz von Foo , jetzt wird JVM verwenden Foo im K anstatt in lib.jar ?


Und wenn es instabil ist, oder von etwas , wie stellen Sie sicher, dass Foo verwenden sollten K's version eher als lib.jar?

  • Es hängt davon ab, welche man zuerst in den class-path und wo Sie instanziiert wird. Sie können, schauen Sie in eigenen classloadern, um dieses Problem zu lösen.
  • Es klingt wie Sie ' re suchen, um eine Tür öffnen zu einer Welt der Schmerzen, wenn nicht für sich dann für denjenigen, der mag zu tun haben mit Ihrem code danach. Entweder sollten Sie verbringen einige Zeit mit dem Lesen, bis auf diese, oder denken über die Verwendung von OSGi oder etwas ähnliches, auch wenn nur die Schaffung eines mega-bundle. Wenn Sie sich entscheiden zu gehen Ihre eigenen Wege-Sie in Aussehen sollte ähnlich gut Lauffläche Weg zu wissen, welche Art von unerwarteten Erschütterungen könnten Sie erwarten (die richtige version an einer Stelle kann nur ein kleiner Schritt).
  • stackoverflow.com/questions/8994147/...
  • Das ist, was JAR-Hölle ist über.
  • Vielen Dank an alle, und ja,das kann ' s nicht sein, eine anmutige Methode , aber ich bin gerade auf der Suche nach einer Lösung um dieses problem zu lösen
  • Eine alternative, mehr standard-Ansatz, nur tauchte in meinem Kopf, die (inspiriert durch den letzten persönlichen Erfahrung) wäre die Verwendung von AOP weaving.
  • das muss eine andere Hölle.
  • nicht, wenn Sie sich die Zeit nehmen, mit ihm zu arbeiten. Es ist perfekt wartbar und robust wenn es richtig gemacht wird und es vermeidet, die Deckkraft, das bringt die Hölle in der jar-Hölle. In diesem Szenario wäre es auch mit einer breiteren Palette von änderungen bei der Vermittlung die Gefahr, dass bestehende client-code, der kompiliert wurde gegen die original-version oder in einem anderen classloader.
  • WOW, ich bin mir sicher, dass wäre die Hölle der Leistung und mantainence. Versucht AOP früher.
  • Laufzeit die Leistung ist nicht betroffen, in alle mit build/load-time weaving und nur am Rande mit der richtigen Laufzeit-Weben. Wartung ist weitgehend, was AOP ist alles über, wenn man es richtig (obwohl dies nicht die beabsichtigte Verwendung, die Wartbarkeit nicht ändern würde). Beides belegt durch AOP ist weit verbreiteten Einsatz in leichtgewichtigen frameworks wie Spring. Es ist offensichtlich nicht eine brauchbare Antwort aus deiner Perspektive, sondern könnte als von jemand anderen suchen in dieser Frage.

InformationsquelleAutor jackalope | 2013-01-05
Schreibe einen Kommentar