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
我应该得到不是空值。我该如何解决?
答案 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值)传递给此方法。