我有2个相同结构的bean和2个相同结构的getter语句,但只有一个有效

时间:2011-04-19 04:21:48

标签: java debugging netbeans constructor javabeans

我有两个结构完全相同的bean。我将这两个bean以完全相同的方式引入同一个java类。然而,其中只有一个有问题。

当我尝试构建它时出现错误:

  

无法找到符号   symbol:构造函数BalanceBean(java.lang.String)   location:类HWpackage.BalanceBean

这是工作bean,UserBean2

package HWpackage;

public class UserBean2 {
  private String id;

  public UserBean2(String id) {
    setUsername(id);
  }

  public String getUsername() {
    return(id);
  }

  public void setUsername(String id) {
    if (!isMissing(id)) {
      this.id = id;
    }
  }

  private boolean isMissing(String value) {
    return((value == null) || (value.trim().equals("")));
  }
}

以下是工作的getter语句:

  UserBean2 userBean2 = (UserBean2)session.getAttribute("userBean2");
  String un = request.getParameter("id");
  userBean2 = new UserBean2(un);
  session.setAttribute("userBean2", userBean2);

现在将其与非工作代码进行比较。

BalanceBean:

package HWpackage;

public class BalanceBean {
  private String balance, id;

  public BalanceBean (String balance, String id) {
    setBalance(balance);
    setID(id);
  }

  public String getBalance() {
    return(balance);
  }

  public void setBalance(String balance)
  {
      this.balance = balance;
  }

  public String getID() {
    return(id);
  }

  public void setID(String id)
  {
      this.id = id;
  }
}

及其吸气声明:

BalanceBean balanceBean = (BalanceBean)session.getAttribute("balanceBean");
String balance = request.getParameter("balance");
balanceBean = new BalanceBean(balance);
session.setAttribute("balanceBean", balanceBean);

出于什么原因,行中的BalanceBean:balanceBean = new BalanceBean(balance); 导致所有问题。

有人可以告诉我原因吗?

更新: 好的,如果我将BalanceBean改为:

package HWpackage;

public class BalanceBean {
  private String balance, id;

  public BalanceBean (String balance) {
    setBalance(balance);        
  }

  public String getBalance() {
    return(balance);
  }

  public void setBalance(String balance)
  {
      this.balance = balance;
  }

  public String getID() {
    return(id);
  }

  public void setID(String id)
  {
      this.id = id;
  }
}

如何添加我的String ID?

4 个答案:

答案 0 :(得分:4)

它们不相同,错误告诉你到底出了什么问题:

cannot find symbol symbol : constructor BalanceBean(java.lang.String)

在BalanceBean中没有构造函数,它以String为唯一参数。

你有:

public BalanceBean (String balance, String id) 

正试图打电话:

balanceBean = new BalanceBean(balance);

编辑:如果您想添加第二个构造函数,您可以:

public BalanceBean (String balance) {
    setBalance(balance);
}

答案 1 :(得分:1)

BalanceBean有两个arg构造函数。 public BalanceBean (String balance, String id)。您只传递一个参数new BalanceBean(balance)

答案 2 :(得分:0)

看一下BalanceBean类构造函数,看来你还没有定义只有一个参数的构造函数。

答案 3 :(得分:0)

构造函数BalanceBeam(String,String)需要2个参数,而您只提供一个参数。因此,需要一个类型为BalanceBeam(String)的新构造函数