Java:从另一个类调用实例化的getter返回null

时间:2019-03-16 15:23:57

标签: java getter

我是Java新手,想提高我的OOP技能。 因此,我尝试编写所有面向对象的“第一个程序”。

无论如何...我启动了一个小型原始测试程序:

public class Primitives {

byte b;

private void setByte (byte b)
{
    this.b = b;
}
public byte getByte() 
{
    return b;
}


short s;

private void setShort (short s)
{
    this.s = s;
}
public short getShort() 
{
    return s;
}


int i;

private void setInteger (int i)
{
    this.i = i;
}
public int getInteger() 
{
    return i;
}


long l;

private void setLong (long l)
{
    this.l = l;
}
public long getLong() 
{
    return l;
}


float f;

private void setFloat (float f)
{
    this.f = f;
}
public float getfloat() 
{
    return f;
}



double d;

private void setDouble (double d)
{
    this.d = d;
}
public double getDouble()
{
    return d;
}


boolean bool;

private void setBoolean (boolean bool)
{
    this.bool = bool;
}
public boolean getBoolean() 
{
    return bool;
}


char c;

private void setChar (char c)
{
    this.c = c;
}
public char getChar() 
{
    return c;
}


String str;

private void setString (String str)
{
    this.str = str;
}
public String getString()
{
    return str;
}


public static void main(String[] args) {

    Primitives prim = new Primitives();
    prim.setBoolean(true);
    //prim.setByte(42);
    //prim.setChar("ft");
    prim.setDouble(42.42);
    //prim.setFloat(42);
    prim.setInteger(42);
    prim.setLong(424242);
    //prim.setShort(0);
    prim.setString("fourtytwo");

    //System.out.println(integer.getInteger());
}

}

然后,我试图在另一个类“ Main”中调用我的吸气剂:

public class Main {

public static void main(String[] args) 
{
    Primitives object = new Primitives();

    int objectInt = object.getInteger();
    String objectString = object.getString();

    System.out.println(objectInt);
    System.out.println(objectString);
}       

}

我的输出是

0
null

这是怎么回事? 我的意思是,我之前实例化(例如getInt),为什么收到0?

我知道这里必须有1000个答案,但是我找不到合适的答案。

另一个问题: 为什么在Setter中出现“原始类型中的setByte(byte)方法不适用于参数(int)”的原因? (这就是为什么我将一些类型注释掉)

2 个答案:

答案 0 :(得分:2)

您应该先调用setter方法并设置值。

答案 1 :(得分:0)

您的代码存在的问题是:您有两个main类,并且您似乎在Main类中运行了一个类,但该类不会初始化变量。

main类中的另一个Primitives方法永远不会执行,因此您实际上尚未初始化变量!

每个应用程序应具有一个main类,并且只有一个