为什么我不能设置两个具有相同参数的构造函数(String,String,int)?但在我的情况下必须应用不同的值,例如A活动输入accNo,phoneNo和金额,B活动输入accNo,billNo,金额。
在android studio中它会提示错误:
Bill(String,String,int)已定义
public class Demo{
static int i,j;
static String userKey[][]={{"10001010","10100010","11001010","10011010"},{"00001010","10100010","11001010","10011010"},{"00001010","10100010","11001010","10011010"},{"00001010","10100010","11001010","10011010"}};
public static void main(String aargs[]){
for(i=0;i<4;i++){
for(j=0;j<4;j++){
System.out.println(String.format("02x",userKey[i][j]);
}
It gives Exception sir.
答案 0 :(得分:1)
您不能拥有2个具有相同签名(或擦除)的构造函数。一个可能的解决方法是使用no-args构造函数&amp;一个实例方法,可以完全满足您的需求:
Bill bill = new Bill();
bill.method1(acc_no, phone_no, amount);
bill.method2(acc_no, bill_no, amount);
public method1(String acc_no, String phone_no, int amount_) {
this.acc_no = acc_no;
this.phone_no = phone_no;
this.amount_ = amount_;
}
public method2(String acc_no, String bill_no, int amount_) {
this.acc_no = acc_no;
this.bill_no = bill_no;
this.amount_ = amount_;
}
答案 1 :(得分:1)
嗯,你不能有两个相同的构造函数,没有意义,但在你的情况下,你可以只交换参数
public Bill(String acc_no, String bill_no, int amount_) {
到
public Bill(String acc_no, int amount_ ,String bill_no) {
答案 2 :(得分:0)
修改类
public class Bill {
String acc_no;
String bill_no;
String phone_no;
int amount_;
public Bill() {
}
public Bill(String acc_no, String bill_no, String phone_no, int amount_) {
this.setAcc_no(acc_no);
this.setBill_no(bill_no);
this.setPhone_no(phone_no);
this.setAmount_(amount_);
}
public Bill(String acc_no, String phone_no, int amount_) {
this.acc_no = acc_no;
this.phone_no = phone_no;
this.amount_ = amount_;
}
public Bill(String acc_no, int amount_, String bill_no) {
this.acc_no = acc_no;
this.bill_no = bill_no;
this.amount_ = amount_;
}
public Bill(String acc_no, int amount_) {
this.setAcc_no(acc_no);
this.setAmount_(amount_);
}
public String getAcc_no() {
return acc_no;
}
public void setAcc_no(String acc_no) {
this.acc_no = acc_no;
}
public String getBill_no() {
return bill_no;
}
public void setBill_no(String bill_no) {
this.bill_no = bill_no;
}
public String getPhone_no() {
return phone_no;
}
public void setPhone_no(String phone_no) {
this.phone_no = phone_no;
}
public int getAmount_() {
return amount_;
}
public void setAmount_(int amount_) {
this.amount_ = amount_;
}
}
答案 3 :(得分:0)
您无法在Java中定义具有相同名称,相同返回类型和相同参数的两个构造函数,因为它无法区分它们的用法,这会导致歧义。
一种可能的解决方案是添加第四个参数来区分两个构造函数。你做不必使用第四个参数。
public Bill(String acc_no, String phone_no, int amount_) {
this.acc_no = acc_no;
this.phone_no = phone_no;
this.amount_ = amount_;
}
public Bill(String acc_no, String bill_no, int amount_, int dummy) {
this.acc_no = acc_no;
this.bill_no = bill_no;
this.amount_ = amount_;
dummy = 0;
}