Java 爪哇:我能';t在存在';这涉及到不同的课程

Java 爪哇:我能';t在存在';这涉及到不同的课程,java,arraylist,overriding,tostring,Java,Arraylist,Overriding,Tostring,这很难很好地描述,但我会尽我所能做到最好。我有一个对象的数组列表。在这些对象内部是属性。它们不是一个类中的所有内容,而是独立的类。这是我第一次使用这样的东西,我不确定我的语法是否正确。我试图让println打印出arraylist中的内容,而不是字节码 //main.java public class Main { public static void main(String[] args) { world w = new world(); System.

这很难很好地描述,但我会尽我所能做到最好。我有一个对象的数组列表。在这些对象内部是属性。它们不是一个类中的所有内容,而是独立的类。这是我第一次使用这样的东西,我不确定我的语法是否正确。我试图让println打印出arraylist中的内容,而不是字节码

//main.java
public class Main {
    public static void main(String[] args) {
        world w = new world();
        System.out.println(w.list);
    }
}

//world.java
public class world {
    ArrayList<object> list = new ArrayList<>;

    public void makeObjectA{
        list.add(new ObjectA())
    }
    public void makeObjectB{
        list.add(new ObjectB())
    }

    @Override public String toString () {
        ObjectA obja = new ObjectA();
        ObjectB objb = new ObjectB();
        return "A: " + obja.getattra() + ", B: " + objb.getattrb();
    }
}

//object.java
public class object {
}

//ObjectA.java
public class ObjectA extends object {
    private int attra = 10;

    public int getattra() {
        return attra;
    }
    public void setattra(int attra) {
        this.attra = attra;
    }
}

//ObjectB.java
public class ObjectB extends object {
    private String attrab = "Ten";

    public String getattrb() {
        return attrb;
    }
    public void setattrb(String attrb) {
        this.attrb = attrb;
    }
}
//main.java
公共班机{
公共静态void main(字符串[]args){
世界w=新世界();
系统输出打印项次(w.list);
}
}
//java
公共阶级世界{
ArrayList=新的ArrayList;
公共无效{
添加(新对象A())
}
公共无效makeObjectB{
添加(新的ObjectB())
}
@将公共字符串重写为字符串(){
ObjectA obja=新的ObjectA();
ObjectB objb=新的ObjectB();
返回“A:+obja.getattra()+”,B:+objb.getattrb();
}
}
//object.java
公共类对象{
}
//ObjectA.java
公共类ObjectA扩展对象{
私有int attra=10;
公共int getattra(){
返回属性;
}
公共void setattra(int attra){
this.attra=attra;
}
}
//ObjectB.java
公共类ObjectB扩展对象{
私有字符串attrab=“十”;
公共字符串getattrb(){
返回属性B;
}
公共void setattrb(字符串attrb){
this.attrb=attrb;
}
}

输出输出字节码。我不确定我做错了什么(可能是语法错误)。请帮助?

您正在调用
数组列表的
toString()
。您应该做的是调用类的
world
toString()

public static void main(String[] args) {
        world w = new world();
        System.out.println(w);
    }

首先,您可以覆盖对象A和对象B的toString()方法。然后,您可以简单地在列表上迭代,并按如下所示打印列表中的对象

    for (Object a : myList)
    System.out.println(a);

实际上,您需要在
ObjectA
ObjectB
类中重写
toString()
,该类将返回attra,attrab,因为,
ArrayList
自动调用封闭类型的
toString
,以打印元素的字符串表示


您的代码目前甚至无法编译,因为您有
System.out.println(列表)
作为
world
类声明中的直接语句…由于
ArrayList list=new ArrayList,您的代码将无法编译
Oh和
ObjectB
尝试使用一个名为
attrb
的变量,该变量不存在。请发布完整的示例,而不仅仅是伪代码。(我还想知道为什么您希望
ObjectA
ObjectB
扩展
world
…这对我来说很奇怪。)抱歉。我在飞行中写的。我重写了一些。