【问题标题】:Using override method from two classes使用两个类的覆盖方法
【发布时间】:2014-03-16 18:28:11
【问题描述】:

我有两个 toString() 并且想通过只调用其中一个来打印它们。 我必须将 class1 的对象作为 Array,将 class2 作为 ArrayList。

主要:

 public static void main(String[] args) {
    Main main = new Main();
    Class1 []class1 = new Class1[2];
    ArrayList<Class2> class2List = new ArrayList<Class2>();

    for(int i=0; i<class1.length; i++){
        class1[i] = getClass1Obj();
        class2List.add(getClass2Obj());   
    } 

    for(int i=0; i<class1.length; i++){
        printClass1(class1, i);            
    }                
}

public static void print(Class1[] cls1, int index){
        System.out.println(cls1[index].toString());
}

第一类:

private Class2 class2;    

@Override
public String toString() {
    return getMethod() + getMethod2() + class2.toString();                             
}

类2:

@Override
public String toString() {
    return getMethod3() + getMethod4();
}

这不起作用。可能是因为我创建不同对象的方式?

【问题讨论】:

  • 在什么情况下不起作用?
  • 当我只打印来自 class1 的 toString 时它可以工作
  • 您遇到什么错误?也许 class2 为空。我没看到你在哪里做 setClass2(class2);
  • 我得到一个空指针异常。
  • 鉴于您在此处发布的代码,无法诊断您的问题。请添加更多相关代码,例如printClass1(s)的正文以及所有getMethod#()getObject#()

标签: java arrays methods arraylist tostring


【解决方案1】:

您应该在创建 class1 实例时添加对 class2 的引用

for(int i=0; i<class1.length; i++){
    class1[i] = getClass1Obj();
    Class2 class2 = getClass2Obj();
    class1[i].setClass2(class2);
    class2List.add(class2);   
} 

记得创建一个 setClass2 方法

public setClass2(Class2 class2) { this.class2 = class2; }

这样class1就会有class2的引用,可以使用class2 toString

【讨论】:

  • 谢谢!这真的很有帮助!
猜你喜欢
  • 1970-01-01
  • 2020-07-22
  • 2015-01-12
  • 2017-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-13
  • 1970-01-01
相关资源
最近更新 更多