java - 同一类中的两个构造函数具有不同的参数

标签 java android constructor

在第 1 课中,我创建了一个实例:

  db = new AdapterDB (cal, rcarbohydrate, rfat, rprotein, getApplicationContext());

在第 2 课中,我创建了一个实例:

db = new AdapterDB (Bits, Truncation, Crossover, Mutation, Chromosomes, Generation, getApplicationContext());

在 AdapterDB 类中,我创建了构造函数:

private DatabaseHelper DBHelper;
    private SQLiteDatabase db;

    public AdapterDB(Context ctx)
    {
        this.context = ctx;
        DBHelper = new DatabaseHelper (context);
    }

    double Truncation;
    double Crossover;
    double Mutation;
    int Generation;

    private Context context;

    int indexOfChromosomes ;
    int indexOfGens;
    int gensNumber;
    int chromosomesNumber;

    String [][] population;
    double [] fitnesstotal;

    public AdapterDB(int Bits, double Truncation, double Crossover, double Mutation, int Chromosomes, int Generation, Context ctx)
    {
        this.indexOfGens = Bits;
        this.Truncation = Truncation;
        this.Crossover = Crossover;
        this.Mutation = Mutation;
        this.indexOfChromosomes = Chromosomes;
        this.Generation = Generation;
        this.context = ctx;
        DBHelper = new DatabaseHelper (context);

        population = new String[indexOfChromosomes][indexOfGens];
        fitnesstotal = new double [indexOfChromosomes];
    }

double cal;
    double rcarbohydrate;
    double rfat;
    double rprotein;

    public AdapterDB(double cal, double rcarbohydrate, double rfat, double rprotein, Context ctx)
    {
        this.cal = cal;
        this.rcarbohydrate = rcarbohydrate;
        this.rfat = rfat;
        this.rprotein = rprotein;
        this.context = ctx;
        DBHelper = new DatabaseHelper (context);
    }

在构造函数中,该值仍然存在,每个变量都有一个值,但是当我想在 AdapterDB 类的某个函数中使用它时,cal、rcarboenchant、rfat 和 r Protein 为零 (0.0) 为什么会发生这种情况?以及如何解决?谢谢。

最佳答案

任何新手程序员都应该牢记的一个好的经验法则是首先拥有类所带来的好处:

What Is A Class? (From the Java Tutorials)

您的 AdapterDB 类显然试图同时成为两个不同的东西。我猜测您调用使用第一个构造函数创建一个实例,但随后期望填充其他值(由第二个构造函数设置)。

您可能应该做的是使 AdapterDB 成为一个抽象类:

public abstract class AdapterDB {

    private Context context;
    private DBHelper dbHelper;

    public AdapterDB(Context context) {
        this.context = context;
        this.dbHelper = new DBHelper(context);
    }

    public Context getContext() {
        return context;
    }

    public DBHelper getDBHelper() {
        return dbHelper;
    }
}

然后,您可以为需要表示的各种数据类型创建单独的类:

public class GeneticAdapter extends AdapterDB {

    int chromosomesNumber;
    // ... And others

    public GeneticAdapter(Context context, int numChromosomes, ...) {
        super(context);
        // Set your instance variables
    }
}

还有健身用的吗?

public class FitnessAdapter extends AdapterDB {
    double cal;
    // ... And others

    public FitnessAdapter(Context context, double cal, ...) {
        super(context);
        // Set your instance variables
    }
}

如果这不是您想要的,我很抱歉,您的问题有点难以理解。祝你好运,如果您有后续行动,请在下面发表评论(或编辑您的答案)。

关于java - 同一类中的两个构造函数具有不同的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8176490/

相关文章:

java - 当 JPA 中字段为 LocalDateTime 时,如何查找今天创建的每个实例?

java - 如何在随机生成的 4x4 网格中找到总和最高的 3x3 网格(取模网格,可以环绕)

java - Class.forName android NoClassDefFoundError -> ClassNotFoundException

perl - 在对象实例上调用 new 有什么好处?

Java-实现mvc

用于查找不同连续字符位置的 Java 正则表达式

javascript - Android OS/iOS/debian linux 中的事件(单击 Enter 键)

java - API 17 : how to store in a array List<List<Integer, 双>> Android Studio

java - 如何将一个构造函数的值设置为另一个构造函数的值?

javascript - 使用 JavaScript 函数添加动态 HTML 内容