2013-08-01 38 views
0

來自現有的代碼庫。類A具有實例變量A.toBeCalled,類型爲「ToBeCalled」。 如何找到它的所有用法/參考A.toBeCalled從代碼庫的整個調用圖? 例如如何在調用圖中找到實例變量對象的所有用法?

  • B類調用A.getToBeCalled()並存儲在其本地var中,然後通過調用它的方法來使用它。
  • B類調用A.getToBeCalled()並存儲在C類的實例var中,然後D類使用C類的實例var。

要求:

  • 什麼方法調用A.toBeCalled對象已在B類,C類,d類做...等
  • 被叫圖表以上

代碼示例

Class A { 
    ToBeCalled toBeCalled = new ToBeCalled(); 
    getToBecalled() { return toBeCalled;} 
} 

Class B {  
    main() { 
    A a = new A(); 
    ToBeCalled toBeCalledInB = a.getToBecalled(); 
    toBeCalledInB.doXXX(); 
    C c = new C(); 
    c.setToBeCalled(toBeCalledInB); 
    D d = new D(); 
    d.start(c); 
    } 
} 

Class C { 
    ToBeCalled toBeCalledInC; 
    setToBeCalled(ToBeCalled theToBeCalled){ 
    toBeCalledInC = theToBeCalled; 
    } 
    getToBeCalled() { 
    return toBeCalledInC; 
    } 
} 

Class D { 
    start(C c) { 
    ToBeCalled toBeCalledInD = c.getToBeCalled(); 
    toBeCalledInD.doYYY(); 
    } 
} 

調用的列表方法A.toBeCalled

  • ToBeCalled.doXXX()
  • ToBeCalled.doYYY()

我已經調查了幾個工具爲起點,然而,他們是那種粗糙

非常感謝幫助。

+0

也許我是小白程序員,但我不明白你的問題在所有。例如同樣的事情。 –

+0

感謝您指出,也許我的表情需要調整。我的意思是如何在類的所有調用方中列出實例var的所有用法。 –

+0

這裏有什麼問題? – EJP

回答

0

如果我理解你的問題,你說的是interfaces。 比方說你有接口MyItf有幾種方法:

public interface MyItf { 
public ToBeCalled getToBeCalled(); 
public void doXXX(); 
public void doYYY(); 
} 

通過使用interfaceToBeCalled類必須覆蓋所有方法。

public class ToBeCalled implements MyItf{ 

@Override 
public ToBeCalled getToBeCalled() { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public void doXXX() { 
    // TODO Auto-generated method stub 
} 

@Override 
public void doYYY() { 
    // TODO Auto-generated method stub 
    } 
} 

其他類:

public class ToBeCalled2 implements MyItf{ 

@Override 
public ToBeCalled getToBeCalled() { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public void doXXX() { 
    // TODO Auto-generated method stub 
} 

@Override 
public void doYYY() { 
    // TODO Auto-generated method stub 
    } 
} 

最後:

public class Launcher { 


public static void main(String[] args) { 
    MyItf my = new ToBeCalled();   
    my.getToBeCalled();  
    my.doXXX();  
    my.doYYY(); 

      my = new ToBeCalled2();  
    my.getToBeCalled();  
    my.doXXX();  
    my.doYYY(); 
} 
} 
+0

我重新說明了我的問題,希望現在可以更容易理解。 –

相關問題