我可以使用 pico 容器共享同一类的两个对象吗?

我可以喜欢吗


private SharableClass object1;

private SharableClass object2;


public ClassA(SharableClass object1, SharableClass object2){

    this.object1=object1;

    this.object2=object2;

}

然后填充object1和object2并共享。那可能吗?


ABOUTYOU
浏览 125回答 4
4回答

慕森王

如果你在 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}

DIEA

我就是这样做的。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);}输出将是 - 测试

慕码人2483693

Pico 支持集合/数组注入,您可以在容器内拥有多个相同类型的实例,然后像这样注入它们public ClassA(List<SharableClass> objects){&nbsp; this.objects = objects;}public ClassB(List<SharableClass> objects){&nbsp; this.objects = objects;}然后很容易对集合中的那些共享对象做任何你想做的事情

慕斯709654

如果通过共享意味着访问代码中任何位置的 object1 和 object2 的值,那么这些变量应该是静态的,如果你的意思是一旦你在代码中初始化了 ClassA 并且你想要访问 object1 和 object2 那么变量应该是上市。你说的分享是这个意思吗?澄清:那么成员 object1 和 object2 必须是静态的,但如果你想保持私有,你应该在抽象类中声明这些变量,并且 ClassA 和 ClassB 继承该类。public abstract class ClassAB{&nbsp; &nbsp; protected SharableClass object1;&nbsp; &nbsp; protected SharableClass object2;}public class ClassA extends ClassAB{&nbsp; &nbsp; //Change object1 and object2 (changes are applied in all ClassAB)}public class ClassB extends ClassAB{&nbsp; &nbsp; //Change object1 and object2 (changes are applied in all ClassAB)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java