Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用超类java中的方法显示arrayList中的元素_Java_Eclipse_Inheritance - Fatal编程技术网

使用超类java中的方法显示arrayList中的元素

使用超类java中的方法显示arrayList中的元素,java,eclipse,inheritance,Java,Eclipse,Inheritance,我试图在main方法中打印出列表中的元素。但是我有一个问题,因为Eclipse说我在超类中实现的方法没有为我的类型定义。 有一个超类,还有三个扩展了这个超类,我已经导入了java.util.List和java.util.ArrayList; 我之所以需要实现这个方法,是因为我的导师问我,不过我知道在主方法中只使用for循环就足够了。 超类: import java.util.ArrayList; import java.util.List; public class Figura {

我试图在main方法中打印出列表中的元素。但是我有一个问题,因为Eclipse说我在超类中实现的方法没有为我的类型定义。 有一个超类,还有三个扩展了这个超类,我已经导入了java.util.List和java.util.ArrayList; 我之所以需要实现这个方法,是因为我的导师问我,不过我知道在主方法中只使用for循环就足够了。 超类:

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));
    }
}
}
但是它也不起作用,并且在线程“main”java.lang.ClassCastException中显示了错误异常:java.util.ArrayList不能转换为zadaniedomoweZadanie1。图a

请帮忙

kolekcje是对
ArrayList
的引用。方法
showElements
是对
Figura
对象的方法

您正试图访问
ArrayList
上的
showElements
,但该列表不可用

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

kolekcje[0].showElements(kolekcje);

此外,基于显示元素正在做什么,您可能需要考虑使其静态并访问它:

Figura.showElements(kolekcje);

为了能够调用
showElements
方法,您需要在
Figura
对象上调用它。所以

kolekcje.showElements(kolekcje);
将不起作用,因为kolekcje是一个
列表
,而不是

因为您想显示
Figura
s的列表,而不仅仅是一个;您最好将
showElements
方法设置为static。你可以这样称呼它:

Figura.showElements(arrayOfFiguras);
图a.showElements()

//显示图形列表中的所有项目
公共静态void showElements(列表m){
对于(int i=0;i
您正在对ArrayList而不是Figura对象调用
showElements()
方法。对于这个问题有两种解决方案,在我看来,更好的方法是使方法静态化。详情如下:

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

将方法设置为静态非常重要,因为
showElements()
方法与调用它的Figura对象的实例完全无关。但是,它完全取决于您传递的列表


您可以阅读更多关于为什么使用静态方法的信息。

为什么方法
showElements
Figura
类中?这不符合格齐·杰斯泽·马·比奇的意思吗?W innym公共古典音乐:我的音乐是从音乐到音乐。zrobićjąstatyczną,albo stworzyćklasą
FiguraContainer
która ma listęobiektów
Figura
+metody kt ore operująna liście jak
showElements
。EN:如果必须使用该方法,可以将其设置为静态,或者创建一个
FiguraContainer
类,其中包含一个list+几个方法,可以对该列表进行操作,如
showElements
。好的,明白了。如果需要调用某些特定于列表的方法,我将创建一个单独的类。非常感谢。天机!
Figura.showElements(arrayOfFiguras);
// Display all the items of a Figura List
public static void showElements (List <Figura> m) { 
    for (int i = 0; i < m.size(); i++){
        System.out.println(m.get(i));
    }
}
public static void showElements (List <Figura> m) { 
Figura p =  m.get(index);
for (int i = 0; i < m.size(); i++){
    System.out.println(m.get(i));
}
kolekcje.showElements(kolekcje);
Figura.showElements(kolekcje);