两个值相同的构造函数获取错误[ANDROID]

时间:2016-06-14 07:50:26

标签: android constructor

为什么我不能设置两个具有相同参数的构造函数(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.

4 个答案:

答案 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)

在android中你不能设置相同类型的两个构造函数 但你知道这是什么,而不是改变你的参数序列

下面的

修改类

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;
}