我目前正在编写一个程序,它读入一个csv文件,然后根据每行的第一个字符(m/t)创建member或trainer类型的对象。我希望函数parseline返回新对象。类trainer从member继承,代码“起作用”,但是trainer类的附加变量在作为“member”返回时丢失。有没有可能返回该函数中的trainer对象或调用另一个有帮助的函数?谢谢。
public static Member parseLine(final String line) {
try {
String[] lines = line.split(";");
String[] sports = lines[2].split(",");
Map<Sports,Level> temp = new LinkedHashMap<Sports,Level>();
for(int count = 0; count < sports.length/2; ++count) {
temp.put(Sports.valueOf(sports[count].toUpperCase()), Level.valueOf(sports[count+1].toUpperCase()));
++count;
}
if(lines[0]=="T")
return new Trainer(lines[1],temp);
else
return new Member(lines[1],temp);
} catch (Exception e) {
System.err.println("Exception occured: " + e);
}
return null;
}
2条答案
按热度按时间frebpwbc1#
您可以尝试返回同时包含培训师和成员的对象,但其中一个对象必须为null。
您可以返回一个包含trainer和member的对,但只能将其中一个初始化为可用值。然后在接收端,你检查培训师是否有效,否则它就是会员。
我引用的具体代码是:
你可以调整a型和b型成为你的教练和会员
dauxcl2d2#
附加构件不丢失;你只需要知道什么时候试着投出
Member
到Trainer
.i、 e.使用
instanceof
或者使用(Trainer)foo
,然后检查结果表达式是否null
或者别的。也就是说,这通常是糟糕设计的症状,因为它破坏了多态性的目的。