一条重要信息:类都是单独的文件,总共有大约10个bean。
我正在处理一个包含多个类的项目,数据必须通过这些类传递。 IE。来自 Class1 的几个字符串必须能够在 Class2 中使用。
我的程序使用带有 set 和 get 方法的 JavaBeans,但是如果我在一个类中设置一个 bean 并尝试在另一个类中获取该数据,我只会返回一个空值。
我不确定最好的方法是什么,我已经很好地定义了 bean,并且想继续使用它们,但我不知道如何使用。
有人能给我指出正确的方向或举个例子吗? 谢谢
编辑
Bean类片段;
public class beans implements java.io.Serializable {
private String string1;
public String getstring1() {
return this.string1;
}
public void setstring1(String string1) {
this.string1 = string1;
}
还有 class1 中的 setter 代码:
beans bean = new beans();
bean.setstring1("test");
以及下注为“got”的类,class2
beans beans = new beans();
String text = bean.getstring1();
这几乎就是我使用 bean 的方式,但它们没有按我希望的那样工作。
最佳答案
在您的示例中,您将在每个类中创建一个新 bean。第一类和第二类引用了两个不同的对象,这就是它们不能访问相同值的原因。
有多种方法可以解决这个问题,具体取决于您的应用。但让我提出一个通用的解决方案。
您可以创建一个 BeanRepository
,它负责引用所有 bean 对象。然后其他类需要知道 bean 的 id
并且它们可以获得引用。
BeanRepository(注意静态方法):
public class BeanRepository {
private static Map<Integer, Bean> beanMap = new HashMap<Integer, Bean>();
public static void putBean(int id, Bean bean) {
beanMap.put(id, bean);
}
public static Bean getBean(int id) {
return beanMap.get(id);
}
}
bean :
public class Bean {
private String name;
public Bean(String name) {
this.name = name;
}
public String whoAmI() {
return name;
}
}
A 类和 B 类:
public class ClassA {
private Bean bean;
public ClassA(int beanId) {
this.bean = BeanRepository.getBean(beanId);
}
public void test() {
System.out.println("I am ClassA. You are " + bean.whoAmI());
}
}
public class ClassB {
private Bean bean;
public ClassB(int beanId) {
this.bean = BeanRepository.getBean(beanId);
}
public void test() {
System.out.println("I am ClassB. You are " + bean.whoAmI());
}
}
测试方法:
public class Main {
public static void main(String[] args) {
BeanRepository.putBean(1, new Bean("one"));
ClassA a = new ClassA(1);
ClassB b = new ClassB(1);
a.test();
b.test();
}
}
关于java - 使用 JavaBeans 在类之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29155566/