Class Mapping - Klasse unter anderem Namen verfügbar machen

Status
Nicht offen für weitere Antworten.

VuuRWerK

Aktives Mitglied
Hallo liebe Community,

wir feilen gerade an einer Idee. Kurz zum Verständnis: Wir stellen innerhalb unserer Software eine Scripting-API zur Verfügung in der wir Groovy als Skriptsprache verwenden. Jetzt wollen wir in dieser API Klassen aus unserem Programm verfügbar machen, aber nicht unter dem im Programm bekannten Namen und Package sondern unter einem eigenständigen Namen.

Bsp:

Im Programm steht eine Klasse zur Verfügung(Beispiel):
Code:
package com.company.product;

public class Algorithm extends AbstractAlgorithm implements IAlgos
{
    private String m_name;

    public Algorithm() {
        this.m_name = "default";
    }

    public Algorithm( String a_name ) {
        this.m_name = a_name;
    }

    public void prepare() {
        // code ... ;)
    }
}

Diese Klasse soll nun in der Scripting-API beispielsweise als Klasse ScrAlgorithm zur Verfügung stehen. Der Name ScrAlgorithm steht vorerst in einer Text-Datei später sicherlich in einer XML.

Unserer erste Idee war natürlich zur Laufzeit diese Klasse ScrAlgorithm zu erstellen und von der Klasse Algorithm erben zu lassen. Da gibt es nur ein kleines Problem, die Konstrukturen. Gibt es eine Möglichkeit die Konstruktoren der Klasse Algorithm der Klasse ScrAlgorithm so zur Verfügung zustellen als wären es die Konstruktoren der Klasse selbst? Oder anders gefragt, gibt es eine Möglichkeit durch Class Mapping die Klasse Algorithm nach "außen" als Klasse ScrAlgorithm zur Verfügung zu stellen?

Freue mich über jegliche Art von Anregungen :)

Gut Schuß
VuuRWerK ;)
 
T

tuxedo

Gast
Kein Plan wie das geht. Aber mich würde interessieren was der Auslöser für diesen Versuch ist. Wäre es nicht einfacher die Klasse gleich richtig zu nennen?

- Alex
 

VuuRWerK

Aktives Mitglied
Das ändern der vorhandenen Klasse ist nicht möglich da unser System ebenfalls diese Klasse verwendet und es so einen ewigen Rattenschwanz nach sich zieht was das ändern innerhalb unseres Systems betreffen würde. Wir sind hierbei sicher nicht zu faul sowas zu machen aber unser System besteht derzeit aus 5500 Klassen, verstehst Du warum wir die Klasse zur Laufzeit umbenennen wollen? ;)

Gut Schuß
VuuRWerK ;)
 
T

tuxedo

Gast
Na und was ist mit vererbung? Damit kannst du ja auch Klassennamen "ändern".
 

kaesebrot

Mitglied
Hi,
wenn ich das richtig sehe, weißt du schon, wie man eine Klasse dynamisch erzeugt. Du müßtest doch dort dann "nur" noch die nötigen Konstruktoren definieren, welche jeweils den entsprechenden Konstruktor der Superklasse aufrufen. An die Informationen welche Konstrukturen es gibt, kommst du ja mit Hilfe von Reflection.

viele Grüße,
Käse
 

VuuRWerK

Aktives Mitglied
@alex0801: Das hab ich in meinem ersten Post schon geschrieben was die Geschichte Vererbung etwas schwierig gestaltet.

@kaesebrot: Genau das haben wir uns auch schon überlegt. Via Reflection die Konstruktoren der zu erbenden Klasse auslesen und dann zur Laufzeit die Konstruktoren in der generierten Klasse parallel dazuerzeugen und den Aufruf des super-Konstruktors implementieren. Wir hatten nur gehofft es gibt noch eine Boardlösung welche uns die Möglichkeit bringt die vorhanden Klasse unter einem anderen Namen verfügbar zu machen.

Wir hatten jetzt noch die Idee den eingebauten Mechanismus des Groovy-ClassLoaders zu erforschen damit soll es wohl auch gehen Klassen unter einem anderen Namen zu laden.

Aber wenn wir mit der Idee der generierten Klassen die mit Reflection geholten Super-Konstruktoren einzubauen nicht auf dem Holzweg waren ist das ja schonmal ok :)

Gut Schuß
VuuRWerK ;)
 
T

tuxedo

Gast
Sorry, hab ich doch glatt übersehen.

Hätte es, wenn vererbubng doof ist, auch mit reflection gemacht.

Vielleicht könntest du auch Proxy-Klassen nehmen. Hierfür brauchst du nur ein passendes Interface. Weiß halt nicht ob das in euer Konzept passt.

- Alex
 

kaesebrot

Mitglied
Hi,

vieleicht könnte man ja auch das groovy-script vor dem Interpretieren automatisiert umschreiben und somit die Klassennamen ersetzen.


viele Grüße,
Käse

EDIT: aber bei 5500 Klassen ist das warscheinlich keine Alternative :)
 

sparrow

Top Contributor
Wenn mich nicht alles täuscht habe ich vor einiger Zeit mal etwas ähnliches mit BeanShell gemacht.
Dabei hab ich die entsprechenden in einer einzigen Klasse gesammelt und dann über die Methoden angefordert. Da war der Klassenname egal.

Bei 5.500 Klassen wäre das aber ein wenig viel.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D NoClassDefFoundError: Could not initialize class Allgemeine Java-Themen 0
J Class to link Java Allgemeine Java-Themen 4
C Was passt hier nicht bei der Calendar-Class Allgemeine Java-Themen 2
E Class.getResourceAsStream() gibt null zurück Allgemeine Java-Themen 2
Erwin82a Object cannot be converted to Custom Class in Lampda Expression Allgemeine Java-Themen 2
T Java Robot Class - Bot Allgemeine Java-Themen 3
S Class File Editor -> Source not found Allgemeine Java-Themen 4
G javafx "class path" exception Allgemeine Java-Themen 5
S Java class direved from inner class Allgemeine Java-Themen 6
S Inner Class Allgemeine Java-Themen 11
K Wildcard und class type Allgemeine Java-Themen 9
M Java model class ? Allgemeine Java-Themen 9
Thallius Ist meine static Helper Class Thread save? Allgemeine Java-Themen 9
S class path resource [config.properties}] cannot be opened because it does not exist Allgemeine Java-Themen 4
J Reflection Aufruf: .class durch .dll ersetzen Allgemeine Java-Themen 4
T Compiler-Fehler NoClassDefFoundError beim Laden einer Class Allgemeine Java-Themen 11
J Class Decompile als String (Procyon) Allgemeine Java-Themen 2
H Class 'java.io.BuferedReader' is not present in JRE Emulation Libary | GWT Fehler?! Allgemeine Java-Themen 0
I Datentypen String in class sicher verwahren Allgemeine Java-Themen 17
R Dynimc Class Loading Allgemeine Java-Themen 5
J Inner class + Leer-Konstruktor Allgemeine Java-Themen 1
Neumi5694 Methoden Generic: Rückgabetyp als Class-Parameter übergeben Allgemeine Java-Themen 3
D Collections.sort funktioniert nicht in exportierten .class Dateien Allgemeine Java-Themen 10
V Eclipse .class Dateien Allgemeine Java-Themen 9
KeexZDeveoper Von .class zu .java Allgemeine Java-Themen 7
N Wo ist Object.class ? Allgemeine Java-Themen 0
K Nicht alle class-Dateien im JRE? Allgemeine Java-Themen 2
M *.class Files ausführen Allgemeine Java-Themen 2
L Klassen Nested Class In Nested Class Allgemeine Java-Themen 3
perlenfischer1984 Dialect class not found exception Allgemeine Java-Themen 15
Tort-E Manifest Main-Class Allgemeine Java-Themen 8
I JSoup Class auslesen Allgemeine Java-Themen 1
K Generic class und Reflection Allgemeine Java-Themen 2
R .class Datei in .jar austauschen Allgemeine Java-Themen 2
R Java .class-File-Konstrunkt mit Programm visualisieren Allgemeine Java-Themen 18
A main-class Not found Allgemeine Java-Themen 3
T Java Class Intrumentation mit Annotations in Laufzeit Allgemeine Java-Themen 1
N Per Reflection auf (method) local inner class zugreifen? Allgemeine Java-Themen 3
P JDK installieren Error: Could not find or load main class HelloWorld.java Allgemeine Java-Themen 3
B public class JarFilter extends FileFilter « Falsch? Allgemeine Java-Themen 4
D Object nach Vererbung mit Class Object überprüfen Allgemeine Java-Themen 4
T Hash von *.class-Datein überprüfen Allgemeine Java-Themen 1
F java.lang.ClassNotFoundException: .class Allgemeine Java-Themen 5
T InvalidClassException - Read null attempting to read class descriptor for object Allgemeine Java-Themen 8
Phash Can't find Main Class Allgemeine Java-Themen 4
B Erste Schritte Plugin erkennen und Class Dateien anzeigen lassen Allgemeine Java-Themen 3
B json zu java class Allgemeine Java-Themen 2
antonbracke Aus Jar eine Class laden und damit arbeiten! Allgemeine Java-Themen 5
D Class<CAP#1> statt Class<...> Allgemeine Java-Themen 5
T Class-Objekt mit URLClassloader Allgemeine Java-Themen 7
A Class Datei aus Verzeichnis über URLClassLoader laden Allgemeine Java-Themen 2
L Class Files , Methode .delete() Allgemeine Java-Themen 13
E NetBeans warning: [options] bootstrap class path not set in conjunction with -source 1.6 Allgemeine Java-Themen 4
X Could not find the main class programm will exit (textdokument) Allgemeine Java-Themen 3
S Could not find the main class Allgemeine Java-Themen 7
B Mal wieder "Could not find the main class" Allgemeine Java-Themen 3
B Variable class in java.lang.Object Allgemeine Java-Themen 11
C Could not find the main class. Allgemeine Java-Themen 15
S Klassen .jar - eine .class datei ändern? Allgemeine Java-Themen 23
A Could not find main class: start Allgemeine Java-Themen 5
S main() class finden Allgemeine Java-Themen 7
hdi Could not find main class? Allgemeine Java-Themen 8
R Warum Class.forName(); Allgemeine Java-Themen 7
C class.class angefordert ? Allgemeine Java-Themen 2
S Methoden Class.forName() >> Methoden - Reihenfolge Allgemeine Java-Themen 5
B Test$1.class mit dem javac compiler Allgemeine Java-Themen 7
G jar Datei findet Main Class nicht... Allgemeine Java-Themen 2
P Java Editor Could not find the main class GUI. Programm will exit. Allgemeine Java-Themen 3
D class Datei einlesen Allgemeine Java-Themen 4
T Interface > Abstract > Class Allgemeine Java-Themen 11
TheDarkRose Subversion .class Dateien auch commiten? Allgemeine Java-Themen 3
D API - Beispiel + static member in inner (non static) class Allgemeine Java-Themen 2
E String name in class convertieren Allgemeine Java-Themen 4
F Änderung in .jar bzw. .class vornehmen ? Allgemeine Java-Themen 18
H2SO3- bestimmte class immer mit 1.4 compilieren Allgemeine Java-Themen 5
B class dateien "einlesen" und objekte erzeugen Allgemeine Java-Themen 6
G Unterschied MyClass.class vs this Allgemeine Java-Themen 2
S mit Class eine Klasse nur einmal instantiieren Allgemeine Java-Themen 4
Sonecc Zugriff auf Class File einer anderen Jar während der Laufzeit Allgemeine Java-Themen 2
M Klasse aus xyz.class Datei laden / package entfernen? Allgemeine Java-Themen 4
BattleMaster246 Could not find the Main class Allgemeine Java-Themen 30
N class Task extends TimerTask ohne Blockieren Allgemeine Java-Themen 15
H .class in .java umwandeln Allgemeine Java-Themen 3
T class.newinstance + try/catch-konstruktor Allgemeine Java-Themen 6
X Cannot refer to a non-final variable settings inside an inner class defined in a different method Allgemeine Java-Themen 4
J Class.forName und CLASSPATH -Problem Allgemeine Java-Themen 5
T Class-files zur Laufzeit zu Reflection-Zwecken laden Allgemeine Java-Themen 18
G Thread in Methode oder in inner class Allgemeine Java-Themen 3
woezelmann referenz der outer class aus static nested class heraus Allgemeine Java-Themen 7
reibi Main-Class in Jarfile Allgemeine Java-Themen 3
E Timer class macht einfach garnichts :/ Allgemeine Java-Themen 6
D Class.forName Allgemeine Java-Themen 2
S Class RGB Farbe Allgemeine Java-Themen 2
S JavaDoc aus .class Datei extrahieren Allgemeine Java-Themen 5
mongole Class.class.getResource(...) Allgemeine Java-Themen 10
N Probleme mit .jar 'Could not find main class' Allgemeine Java-Themen 3
T Class Not Found Exception beim import von Paket Allgemeine Java-Themen 2
G Abstract class Stillfrage Allgemeine Java-Themen 4
P Class Casting: Graphics/Graphics2D Allgemeine Java-Themen 7
H2SO3- abstract class mit Beispielen in abstracten Methoden Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben