从一个类获取值以在另一个类中使用它(java)

时间:2011-11-17 13:35:28

标签: java

我有两个班级

ABC班级

double a = 0.5 
public double lala()
{
     return a;
}

我想在另一个课堂上使用它,让我们说一下DEF课程

ABC abc;
double baba = abc.lala();

但是它说java.lang.NullPointerException,任何想法? THX

public class AdapterDB 
{ 
        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);        
    }

        public double Calorie()
    {
        return cal;
    }

    public double Carbohydrate()
    {
        return rcarbohydrate;
    }

    public double Protein()
    {
        return rprotein;
    }

    public double Fat()
    {
        return rfat;
    }

}

这是我的ABC类代码,我想在其他类中使用其中一些> _<

3 个答案:

答案 0 :(得分:2)

在使用之前,您需要初始化abc引用:

ABC abc = new ABC();
// then use it

答案 1 :(得分:2)

你需要在内存中分配ABC,否则它指向null,因此NullPointerException:

ABC abc = new ABC();
double baba = abc.lala();

编辑:好的,如果ABC没有零参数构造函数,如:

public ABC() { }

您有两种方法可以解决您的问题。添加一个和内部为您的其他字段提供默认值。像:

public AdapterDB()
{
    DBHelper = new DatabaseHelper (context);        
}

或者,修改对象的创建,如:

double p1 = <some value>;
double p2 = <some value>;
double p3 = <some value>;
double p4 = <some value>;
Context ctx = new Context(); // don't know what this does.
ABC abc = new ABC(p1, p2, p3, p4, context);
double baba = abc.lala();

答案 2 :(得分:1)

你没有初始化ABC类的abc对象,这就是原因。你需要像这样初始化第一个abc对象

ABC abc = new ABC();
double baba = abc.lala();

如果你想在不创建任何类的对象的情况下使用该类成员使用静态关键字,就像这样

class ABC{
   private static double a = 0.5;
   public static double lala(){
         return a;
   }
}

您可以像这样访问该方法

ABC.lala();

但为此您必须使用要用于静态方法

的static关键字定义另一个成员