Hi,
Ich bin grad vor einem Problem gestanden und hab mir dadurch folgende Frage gestellt.
Ich habe in Package A in JAR 1 folgende Class:
Und dazu habe ich in Jar 2 folgende Class.
Das ganze ist kein problem beide Jars am ClassPath und werden geladen.
Wenn class ClassG also die method doSomething() aufruft wird die class ClassP und aus dieser doSomethingSpecial() aufgerufen wird.
Was aber wenn ich die alte Jar 2 durch eines mit folgender ClassP ersetze
Würde es da zu problemen kommen?
Eigentlich sollte das klappen, da ich ja nur die unveränderte methode aufrufe und die JVM daher keinen grund sieht das abzu lehen.
Dennoch frage ich mich ob die JVM nicht irgend welche sicherheits vorkehrungen hat um so etwas zu verhindern.
PS: Ja ich weis, das man in solchen fällen eigentlich gegen Interfaces Programmiert, und das war auch mein eingangs erwähntes Problem.
Ich bin grad vor einem Problem gestanden und hab mir dadurch folgende Frage gestellt.
Ich habe in Package A in JAR 1 folgende Class:
Code:
package org.example.PackageA
import org.example.PackageB.ClassP
public class ClassG {
int id;
String name;
public ClassG() { }
void doSomething() {
ClassP cPe = new ClassP()
int a = cPe.doSomethingSpecial(id, name);
}
}
Und dazu habe ich in Jar 2 folgende Class.
Code:
package org.example.PackageB
public class ClassP {
public ClassP() { }
public int doSomethingSpecial(int b, String P) {
return doThis(b, P);
}
public int doThis(int b, String P) {
return b + P.lenght();
}
public int doThat(int b, String P) {
return b + P.lenght();
}
public int domDiDo(int b, String P) {
return 1337;
}
}
Das ganze ist kein problem beide Jars am ClassPath und werden geladen.
Wenn class ClassG also die method doSomething() aufruft wird die class ClassP und aus dieser doSomethingSpecial() aufgerufen wird.
Was aber wenn ich die alte Jar 2 durch eines mit folgender ClassP ersetze
Code:
package org.example.PackageB
public class ClassP {
public ClassP() { }
public int doSomethingSpecial(int b, String P) {
return 3 + 1 + doThat(3,P);
}
private void doNothing(int b, String P) {
}
private int doThat(int b, String P) {
return b + P.lenght();
}
public int doNew(int b, int P) {
return 3 + 1 + doThat(3,P);
}
}
Würde es da zu problemen kommen?
Eigentlich sollte das klappen, da ich ja nur die unveränderte methode aufrufe und die JVM daher keinen grund sieht das abzu lehen.
Dennoch frage ich mich ob die JVM nicht irgend welche sicherheits vorkehrungen hat um so etwas zu verhindern.
PS: Ja ich weis, das man in solchen fällen eigentlich gegen Interfaces Programmiert, und das war auch mein eingangs erwähntes Problem.