![](/img/trans.png)
[英]What is the best way to send a collection of objects over the Event Bus in Vertx?
[英]What is the best design for Sharing Data over the Objects?
我想在对象之间共享数据。 实际上,例如,有一个由水和个体组成的世界。 我希望个人能够使用水。 我看过如何转换Collection中的Individual表,或使Water成为Singleton,但实际上,最好的设计是什么? (我们可能在单个对象上有多个线程处理……因此我们可能需要一个线程安全的实现。)(此外,我想知道通过参数传递或实例化每个单个对象的Water,但这似乎不是最有效的实现(处理实例化)?...)
一个简单的对象集,用于解决问题(该集根本不共享Water,“个人”在此处显示为“ null”):
package myworld.testing;
public class World {
static Water evolution;
static Individual [] tribe;
public World(){
evolution=new Water();
}
public static Water getWater(){
return evolution;
}
public static void main(String[] args) {
evolution=new Water();
System.out.println("info "+evolution.get());
tribe = new Individual[10];
for(Individual individual : tribe){
System.out.println("trace "+individual);
}
evolution=new Water("sprakly");
System.out.println("info "+evolution.get());
for(Individual individual : tribe){
System.out.println("trace "+individual);
}
evolution.set("salty");
System.out.println("info "+evolution.get());
for(Individual individual : tribe){
System.out.println("trace "+individual);
}
}
}
package myworld.testing;
public class Individual {
int data;
public Individual(){
data=0;
}
public Individual(int i){
data=i;
}
public void set(int i){
data=i;
}
public int get(){
return data;
}
public String toString(){
return World.getWater().get()+" "+data;
}
}
package myworld.testing;
public class Water {
private static Water instance = null;
String type;
public static Water getInstance(){
if(instance == null) {
instance = new Water();
}
return instance;
}
public Water(){
type="1";
}
public Water(String str){
type=str;
}
public void set(String str){
type=str;
}
public String get(){
return type;
}
}
非常感谢您的提前帮助和建议。 随时分享您的想法:)
遍历Individual
s数组时获得null
值的原因是,对于每个数组元素,您尚未创建实例,其引用将占据该实例。 实例化一个数组只会创建一个null
指针的顺序存储块。 正确的解决方案是:
tribe = new Individual[10];
for(int i = 0; i < tribe.length; i++) {
tribe[i] = new Individual();
}
在问候你对“个人访问了水,”这个问题你必须声明的封装例如Water
的World
与公众知名度修饰符给予含包外访问所有类别World
。
鉴于“ Individual
和“ World
位于同一程序包中,因此不需要使用public
修饰符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.