在Java中返回Null值

时间:2014-04-21 03:16:13

标签: java

package project;

/**
 * 
 * @author manish
 */
public class ClassA {
    String str;

    public void SerString(String _str) {
        str = _str;
    }

    public String GetString() {
        return str;
    }
}

package project;

/**
 * 
 * @author manish
 */
public class ClassB extends ClassA {

    /**
     * @param args
     *            the command line arguments
     */
    String strB;

    public void SerStringB(String _strB) {
        strB = _strB;
    }

    public String GetStringB() {
        return strB;
    }

    public String output() {
        ClassA a = new ClassA();
        return strB + a.GetString();
    }

    public static void main(String[] args) {
        ClassA A = new ClassA();
        A.SerString("data");
        ClassB B = new ClassB();
        B.SerStringB("firm");
        System.out.println(B.output());
        // TODO code application logic here
    }

}

输出:firmnull

我应该得到不是空值。我该如何解决?

2 个答案:

答案 0 :(得分:2)

您正在output方法中创建一个新对象,该对象没有a的值。尝试将ClassA中创建的main对象传递给output方法并使用该对象。

public String output(ClassA a)
{
    return strB+a.GetString();
}

然后在主调用输出中:

public static void main(String[] args) {
  ClassA A = new ClassA();
  A.SerString("data");
  ClassB B = new ClassB();
  B.SerStringB("firm");
  System.out.println(B.output(A));        
  // TODO code application logic here
}

答案 1 :(得分:0)

在B类的输出方法中,您创建一个A对象而不传递其str(String)的字符串值。
因此,当您调用a.GetString()时,它将返回null。
结合strB,输出方法返回“firmnull”
这是导致错误的原因,也是您业务逻辑的基础。
在这种情况下,您需要为创建后传递str值,或者将A对象(带有str值)传递给此方法。