簡體   English   中英

不兼容的類型泛型Java

[英]Incompatible types generics Java

我做了這個代碼:

import java.util.LinkedList;

public class Node<T> {
private T data;
private LinkedList<T> children;
public Node(T data) {
    this.data = data;
    this.children = new LinkedList<T>();
}
public T getData() {
    return this.data;
}
public LinkedList<T> getChildren(){
    return this.children;
}
}


public class Graph <T> implements Network<T> {
private Node source;
private Node target;
private ArrayList<Node> nodes = new ArrayList<Node>();


public Graph(T source,T target) {
    this.source = new Node(source);
    this.target = new Node(target);


}


public T source() {
    return source.getData();
}

public T target() {
    return target.getData();
}

我在source()和target()上得到這個錯誤:需要T找到java.lang.Object為什么? getData()函數的返回類型是T(返回的泛型類型)

private Node source;
private Node target;

這些應該是Node<T> 同樣,以下幾行。 編譯器會給你一個警告。 記下它。 (當混合原始類型和泛型時,Java語言規范通常要求編譯器放棄。)

Graph類中用Node<T>替換Node

public class Graph<T> implements Network<T> {
    private Node<T> source;
    private Node<T> target;
    private ArrayList<Node> nodes = new ArrayList<Node>();

    public Graph(T source, T target) {
        this.source = new Node<T>(source);
        this.target = new Node<T>(target);

    }

    public T source() {
        return source.getData();
    }

    public T target() {
        return target.getData();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM