gpt4 book ai didi

java - 使用父类(super class) java 中的方法显示 arrayList 中的元素

转载 作者:行者123 更新时间:2023-11-30 03:09:07 25 4
gpt4 key购买 nike

我正在尝试从主方法中的列表中打印出元素。但是我有一个问题,因为 Eclipse 说我在父类(super class)中实现的方法没有为我的类型定义。有一个父类(super class),还有其他三个扩展这个父类(super class),我导入了 java.util.List 和 java.util.ArrayList;我需要实现方法的原因是因为我的导师要求这样做,但我知道在主方法中只使用 for 循环就足够了。父类(super class):

import java.util.ArrayList;
import java.util.List;

public class Figura {

private int x;
private int y;
private String name;
private int index;


public Figura (String name, int x, int y) {
this.name = name;
this.x = x;
this.y = y;
}


public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

public void show(Figura p) {
System.out.println(p.toString());
}
public void showElements (List <Figura> m) {
Figura p = m.get(index);
for (int i = 0; i < m.size(); i++){
System.out.println(m.get(i));
}
}
}

我不会在这里显示我创建的所有其他类(这些类是简单的数字,它们扩展了所有父类(super class))。但主要问题在这里:

import java.util.ArrayList;
import java.util.List;
public class zadanie2 {

public static void main(String[] args) {
// TODO Auto-generated method stub
List <Figura> kolekcje = new ArrayList<Figura>(10);

Punkt pr1 = new Punkt("Prostokat", 10,148,"Ciemne");
kolekcje.add(0,new Prostokat(pr1,42));
Punkt kolo1 = new Punkt("Kolo", 41,23,"Malinowe");
kolekcje.add(1,new Kolo(kolo1, 126));
Punkt pu31 = new Punkt("Punkt 3D", 45, 23,"Pomaranczowe");
kolekcje.add(2, new punkt3D(pu31, 451));
Punkt kw1 = new Punkt("Kwadrat", 215, 521,"Szary");
kolekcje.add(3, new Kwadrat(kw1, 620));
Punkt wk1 = new Punkt("Wektor", 52, 13,"Brazowy");
kolekcje.add(4, new Wektor(wk1, 41,52));
Punkt ec1 = new Punkt("Eklipsa", 52, 301, "Kremowy");
kolekcje.add(5, new Eclipsa(ec1, 22));
Punkt pr2 = new Punkt("Prostokat", 63,40,"Bialy");
kolekcje.add(6, new Prostokat(pr2,310));
Punkt kolo2 = new Punkt("Kolko",52,314,"Rozowe");
kolekcje.add(7, new Kolo(kolo2, 52));
Punkt pu32 = new Punkt("Punkcik 3D", 52,63,"Ciemno-brazowe");
kolekcje.add(8, new punkt3D(pu32, 412));
Punkt kw2 = new Punkt("Kwadracik", 52, 631,"Oliwkowy");
kolekcje.add(9, new Kwadrat(kw2,541));
Punkt wk2 = new Punkt("Wektor", 12, 71, "Czarne");
kolekcje.add(10, new Wektor(wk2, 41, 23));

int size = kolekcje.size();

//for (int i = 0; i< kolekcje.size(); i++) {
// System.out.println(kolekcje.get(i));
//}
kolekcje.showElements(kolekcje);
}

注释的内容(for 循环),工作得很好,但是 showElements(List <Figura> m)方法不起作用,并且 Eclipse 显示该方法未定义为类型 List<Figura> .
另外,建议像这样转换方法

((Figura) kolekcje).showElements(kolekcje);

但它也不起作用,并显示错误 Exception in thread "main"java.lang.ClassCastException: java.util.ArrayList无法转换为 zadaniedomoweZadanie1.Figura
请帮忙!

最佳答案

kolekcje 是对 ArrayList 的引用。方法 showElementsFigura 对象上的一个方法。

您正在尝试访问 ArrayList 上的 showElements,但该方法不可用。

您将能够在 Figura 实例上访问它,例如:

kolekcje[0].showElements(kolekcje);

此外,根据 showElements 正在执行的操作,您可能需要考虑将其设为静态并按如下方式访问它:

Figura.showElements(kolekcje);

关于java - 使用父类(super class) java 中的方法显示 arrayList 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34008129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com