泛型和静态方法的问题 - Java

时间:2017-11-14 17:00:25

标签: java generics

我尝试使用Generics并在简单的基于文本的UI中实现通用列表,但是我不断收到消息说我无法通过我的方法获得不同的方法等等。 #39;静止。

有人可以指出我做错了吗?

public class GenericList<T> {

    List<T> genericList = new ArrayList<T>();

    public void addGeneric(T t) {
        this.genericList.add(t);
    }

    public static void initial() {
        // USER INPUT AREA
        switch(ans.toLowerCase()) {
            case "add" : addToList(); break;
            case "delete" : deleteFromList(); break;
            case "print" : printList(); break;
        }
    }

    public void deleteFromList() {}

    public void printList() {
        for (int i = 0; i<this.genericList.size(); i++) {
            System.out.println(this.genericList.get(i));
        }
    }

    public void addToList() {
        // USER INPUT AREA
        switch(type.toLowerCase()) {
            case "x":
                System.out.println("Exitiing...");
                initial();
                break;
            case "string": type="String"; break;
            case "int": type="Integer"; break;
            case "integer": type="Integer"; break;
        }

        System.out.println("Enter data...");
        String data = s.next();
        if (data.equals("x")){
            System.out.println("Exiting...");
            initial();
        }
        initial();

    }

    public static void main(String[] args) {
        GenericList g = new GenericList();
        initial();

    }
}

2 个答案:

答案 0 :(得分:0)

你的问题不是泛型。变化

public static void initial() {

public void initial() {

并将主要内容改为

public static void main(String[] args) {
    new GenericList().initial();
}

答案 1 :(得分:0)

我认为这个问题与您在静态方法中使用非静态方法(即addToList() etc)这一事实有关(即initial())。 @ danben在以下帖子中的答案很好地解释了它:calling non-static method in static method in Java。为了解决这个问题,您可以将其他方法设为静态或使initial()为非静态方法。