亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我可以使用 pico 容器共享同一類的兩個對象嗎?

我可以使用 pico 容器共享同一類的兩個對象嗎?

ABOUTYOU 2022-07-20 09:55:04
我可以喜歡嗎private SharableClass object1;private SharableClass object2;public ClassA(SharableClass object1, SharableClass object2){    this.object1=object1;    this.object2=object2;}然后填充object1和object2并共享。那可能嗎?
查看完整描述

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

}


查看完整回答
反對 回復 2022-07-20
?
DIEA

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);

}

輸出將是 - 測試


查看完整回答
反對 回復 2022-07-20
?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

Pico 支持集合/數組注入,您可以在容器內擁有多個相同類型的實例,然后像這樣注入它們


public ClassA(List<SharableClass> objects){

  this.objects = objects;

}


public ClassB(List<SharableClass> objects){

  this.objects = objects;

}

然后很容易對集合中的那些共享對象做任何你想做的事情


查看完整回答
反對 回復 2022-07-20
?
慕斯709654

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)

}


查看完整回答
反對 回復 2022-07-20
  • 4 回答
  • 0 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號