4 回答

TA貢獻1777條經驗 獲得超3個贊
如果你在 classA 和 classB 中都聲明了私有 object1 和 object2,那么你在一個同時依賴 classA 和 classB 的類中初始化這些變量,可能是 picoContainer。然后您可以在 classA 中填充對象數據并在 classB 中使用該數據。如下所示:
public class classC{
private SharableObject object1;
private SharableObject object2;
public classC(){
//initiliaze objects
object1 = new SharableObject();
object2 = new SharableObject();
}
private classA aClass = new classA(object1, object2);
private classB bClass = new classB(object1, object2);
//since they refer same objects you can get data from classB when you change data from classA
}

TA貢獻1820條經驗 獲得超2個贊
我就是這樣做的。
xDTO{
String xName;
void setxName(String name){ xName = name;}
String getxName(){ return xName;}
public xDTO(){
}
publicxDTO(String name){
this.xName=name;
}
因為共享狀態 XDTO 的構造函數不止于默認構造函數,所以 pico 容器無法以通常的方式創建構造函數。所以我不得不創建一個“包裝類” xDTOShare{ ArrayList xDTOs;
public void addToxDTO(XDTO dto){
xDTO xdto1 = new xDTO();
xdto1.setxName(dto.name);
xDTOs.add(xdto1);
}
classA{
private ArrayList<xDTO> dtos;
public classA(ArrayList<xDTO> dtos){
this.dtos = dtos;
dtos.set(new XDTO("test"));
}
classB{
private ArrayList<xDTO> dtos;
public classB(ArrayList<xDTO> dtos){
this.dtos = dtos;
System.out.println(dtos.getXName);
}
輸出將是 - 測試

TA貢獻1860條經驗 獲得超9個贊
Pico 支持集合/數組注入,您可以在容器內擁有多個相同類型的實例,然后像這樣注入它們
public ClassA(List<SharableClass> objects){
this.objects = objects;
}
public ClassB(List<SharableClass> objects){
this.objects = objects;
}
然后很容易對集合中的那些共享對象做任何你想做的事情

TA貢獻1840條經驗 獲得超5個贊
如果通過共享意味著訪問代碼中任何位置的 object1 和 object2 的值,那么這些變量應該是靜態的,如果你的意思是一旦你在代碼中初始化了 ClassA 并且你想要訪問 object1 和 object2 那么變量應該是上市。
你說的分享是這個意思嗎?
澄清:
那么成員 object1 和 object2 必須是靜態的,但如果你想保持私有,你應該在抽象類中聲明這些變量,并且 ClassA 和 ClassB 繼承該類。
public abstract class ClassAB{
protected SharableClass object1;
protected SharableClass object2;
}
public class ClassA extends ClassAB{
//Change object1 and object2 (changes are applied in all ClassAB)
}
public class ClassB extends ClassAB{
//Change object1 and object2 (changes are applied in all ClassAB)
}
添加回答
舉報