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

问题描述 投票:1回答:2

我是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”中调用我的getter:

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中得到“Primitives类型中的方法setByte(byte)不适用于参数(int)”? (这就是我评论一些类型的原因)

java getter
2个回答
0
投票

您的代码的问题是:您有两个main类,看起来您正在运行Main类中的那个并不启动您的变量。

你的main类中的另一个Primitives方法永远不会被执行,所以你实际上没有启动你的变量!

每个应用程序应该有一个main类,只有一个


2
投票

您应该在获取之前调用setter方法并设置值。

© www.soinside.com 2019 - 2024. All rights reserved.