调用对象的获取名称方法 returns null
Calling a get name method for an object returns null
我有一个方法遍历 ArrayList 'Clearance' 中的每个元素,如果它是 HighClearance 的一个实例,我想将它添加到名称的字符串列表中。
问题:每当我调用 'Clearance' superclass 中的 getName() 方法时,它只是 returns null 并发送 return 名称。
public static String peopleClearance (ArrayList<Clearance> clearances) {
String names = "";
for(Clearance c: clearances) {
if(c instanceof HighClearance) {
System.out.println(c.getName()); //tested using sysout statement, just prints ''
names += c.getName();
}
}
return names;
}
在主要方法中:
注:Clearance中的构造函数class:public Clearance(String pname)
ArrayList<Clearance> clear= new ArrayList<Clearance>();
clear.add(new HighClearance("Mike"));
clear.add(new HighClearance("John"));
System.out.println(peopleClearance(clear));
如果您的 superclass/subclass 使用的名称 属性 正确,请检查此工作示例:
import java.util.ArrayList;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<Clearance> clearances = new ArrayList<>();
clearances.add(new Clearance("C-Tes"));
clearances.add(new HighClearance("H-Test"));
clearances.add(new Clearance("CC-Test"));
clearances.add(new HighClearance("HH-Test"));
System.out.println(peopleClearance(clearances));
}
// changed the parameter to List interface instead of ArrayList
public static String peopleClearance(List<Clearance> clearances) {
String names = "";
for (Clearance c : clearances) {
if (c instanceof HighClearance) {
System.out.println(c.getName()); // tested using sysout statement, just prints ''
names += c.getName();
}
}
return names;
}
}
class Clearance {
private String name;
public Clearance(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
}
class HighClearance extends Clearance {
// if required!
public HighClearance(String name) {
super(name);
}
}
我有一个方法遍历 ArrayList 'Clearance' 中的每个元素,如果它是 HighClearance 的一个实例,我想将它添加到名称的字符串列表中。 问题:每当我调用 'Clearance' superclass 中的 getName() 方法时,它只是 returns null 并发送 return 名称。
public static String peopleClearance (ArrayList<Clearance> clearances) {
String names = "";
for(Clearance c: clearances) {
if(c instanceof HighClearance) {
System.out.println(c.getName()); //tested using sysout statement, just prints ''
names += c.getName();
}
}
return names;
}
在主要方法中:
注:Clearance中的构造函数class:public Clearance(String pname)
ArrayList<Clearance> clear= new ArrayList<Clearance>();
clear.add(new HighClearance("Mike"));
clear.add(new HighClearance("John"));
System.out.println(peopleClearance(clear));
如果您的 superclass/subclass 使用的名称 属性 正确,请检查此工作示例:
import java.util.ArrayList;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<Clearance> clearances = new ArrayList<>();
clearances.add(new Clearance("C-Tes"));
clearances.add(new HighClearance("H-Test"));
clearances.add(new Clearance("CC-Test"));
clearances.add(new HighClearance("HH-Test"));
System.out.println(peopleClearance(clearances));
}
// changed the parameter to List interface instead of ArrayList
public static String peopleClearance(List<Clearance> clearances) {
String names = "";
for (Clearance c : clearances) {
if (c instanceof HighClearance) {
System.out.println(c.getName()); // tested using sysout statement, just prints ''
names += c.getName();
}
}
return names;
}
}
class Clearance {
private String name;
public Clearance(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
}
class HighClearance extends Clearance {
// if required!
public HighClearance(String name) {
super(name);
}
}