#java #debugging #netbeans #constructor #javabeans
#java #отладка #netbeans #constructor #javabeans
Вопрос:
У меня есть два компонента, которые структурированы точно так же. Я извлекаю оба этих компонента в один и тот же класс java точно таким же образом. Однако только у одного из них есть проблема.
Вот ошибка, когда я пытаюсь ее собрать:
не удается найти символ symbol: конструктор BalanceBean (java.lang.String) расположение: класс HWpackage.BalanceBean
Вот рабочий компонент, 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("")));
}
}
И вот рабочие операторы получения:
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 (баланс);
вызывает все проблемы.
Кто-нибудь, пожалуйста, может сказать мне, почему?
ОБНОВЛЕНО: хорошо, если я изменю свой 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;
}
}
Как мне добавить обратно мой идентификатор строки?
Комментарии:
1. Я не понимал, что не могу просто поместить туда все, что мне нужно. Итак, могу ли я иметь баланс и идентификатор в одном компоненте? И если да, то как мне это настроить?
Ответ №1:
Они не идентичны, и ошибка точно сообщает вам, что не так:
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. Я не понимал, что не могу просто поместить туда все, что мне нужно. Итак, могу ли я иметь баланс и идентификатор в одном компоненте? И если да, то как мне это настроить?
2. Я немного смущен тем, о чем вы спрашиваете. Вы можете делать все, что хотите. В данный момент вы пытаетесь вызвать конструктор, который не существует. Вашему конструктору требуется 2 строки, и вы предоставляете ему одну. Создайте второй конструктор, который принимает только одну строку, если хотите, точно так же, как в вашем другом компоненте (см. Мой отредактированный ответ выше).
3. Большое вам спасибо за вашу помощь, я обновил свой вопрос, если бы вы могли помочь мне с этим, я был бы очень признателен!
4. @Turk, вы, кажется, не понимаете основ того, как работают методы или конструкторы. Я не уверен, как помочь в этой ситуации, кроме как сказать, что вам нужно начать с базового руководства по программированию. Ваш первый конструктор был хорош, если вы хотели предоставить 2 строки (balance и id), но вы этого не делали. Теперь вы изменили его, чтобы принимать только один аргумент.
5. Ах! Спасибо за вашу помощь, я думаю, что я понял это. Я просмотрел некоторую информацию о конструкторах и, полагаю, нашел свой ответ. Вы мне очень помогли!
Ответ №2:
В BalanceBean есть конструктор с двумя аргументами. public BalanceBean (String balance, String id)
. Вы передаете только один аргумент new BalanceBean(balance)
Ответ №3:
Взгляните на конструкторы класса BalanceBean, похоже, вы не определили конструктор только с одним параметром.
Ответ №4:
Конструктор BalanceBeam(String, строка) ожидает 2 параметра, а вы предоставляете ему только один параметр. Поэтому необходим новый конструктор типа BalanceBeam (строка)