java-return多个返回类型

yxyvkwin  于 2021-06-27  发布在  Java
关注(0)|答案(2)|浏览(407)

我目前正在编写一个程序,它读入一个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;

}
frebpwbc

frebpwbc1#

您可以尝试返回同时包含培训师和成员的对象,但其中一个对象必须为null。
您可以返回一个包含trainer和member的对,但只能将其中一个初始化为可用值。然后在接收端,你检查培训师是否有效,否则它就是会员。
我引用的具体代码是:

public class Pair<A,B> {
public final A a;
public final B b;

public Pair(A a, B b) {
    this.a = a;
    this.b = b;
}
};

你可以调整a型和b型成为你的教练和会员

dauxcl2d

dauxcl2d2#

附加构件不丢失;你只需要知道什么时候试着投出 MemberTrainer .
i、 e.使用 instanceof 或者使用 (Trainer)foo ,然后检查结果表达式是否 null 或者别的。
也就是说,这通常是糟糕设计的症状,因为它破坏了多态性的目的。

相关问题