25. februar 2009 - 07:51Der er
8 kommentarer og 1 løsning
Få fat i den class, som kalder constructor
Hi,
jeg har et object af klassen "Test" som kalder en constructor i Test2. Nu vil jeg gerne finde ud af, hvilket object der har kaldet denne constructor - og arbejde videre med dette.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++ public class Test2 { public Test2() { Object callerObject = null; // xyz.getObject(); --> "Test" if ( callerObject instanceof Test ) { Test co = (Test)callerObject; co.printOK(); } } } +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++ public class Test {
public static void main( String[] args ) { Test test = new Test(); }
public Test() { this.test2 = new Test2(); }
private Test2 test2 = null;
public void printOK() { System.out.println( "OK" ); } } +++++++++++++++++++++++++++++++++++++++++++++++++++++++
Hvad skal der stå i stedet for: "xyz.getObject();" ?
Min tankegang er, at jeg har et root-object, som har en form for registry-object - og at jeg ikke hele tiden vil have denne registry inde i en constructor. På denne måde kan jeg gå tilbage til ...
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Hm. Nu skal jeg naturligvis læse hele spørgsmåls teksten og ikke kun overskriften.
class Test2 { public Test2() { Exception ex = new Exception(); StackTraceElement[] ste = ex.getStackTrace(); if ( ste[1].getClassName().equals("Test") ) { System.out.println("haps"); } } }
finder klassen men ikke instansen.
Men hvad vil du have hvis constructor bliver kaldt fra en static metode ?
Men hvis du ved at det ikke er et problem, så kan vi gribe til de grove midler.
Du kan bruge AspectJ !
Test.java ---------
public class Test { private Test2 test2 = null; public Test() { test2 = new Test2(); } public void printOK() { System.out.println( "OK" ); } public static void main( String[] args ) { Test test = new Test(); } }
class Test2 { public Test2() { Exception ex = new Exception(); StackTraceElement[] ste = ex.getStackTrace(); if ( ste[1].getClassName().equals("Test") ) { System.out.println("haps"); } } public Test2(Test co) { co.printOK(); } }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.