簡體   English   中英

泛型上的Java靜態函數

[英]Java static function on generics

嘿我正在嘗試編寫一個基於其泛型參數調用靜態函數的函數。 我有以下代碼:

public class Model<T extends Listable>
{
    private Document doc;

    /*
        When the JavaBean is created, a Document object is made using
        the Listable parameter. The request string for the specific
        type is used to pull XML-data from the cloud.
    */
    public Model()
    {
        try
        {
            doc = cloud.request(T.getRequestString());
        }
        catch(Exception e)
        {
        }
    }

    /*
        getMatches (used in JSP as "foo.matches") generates a list
        of objects implementing the Listable interface.
    */
    public List<Listable> getMatches()
    {
        return T.generateMatches(doc);
    }
}

我該怎么做,我只是得到一些關於靜態上下文的東西。 '非靜態方法generateMatches(org.jdom.Document)無法從靜態上下文中引用'

將評論轉變為答案:

您可以引入類型為T的實例變量,並在其上調用generateMatches。 您不能在類型T本身上調用generateMatches。

您可以通過構造函數注入此實例變量並將其存儲在私有變量中:

private T instanceOfT;

public Model(T instanceOfT){
    this.instanceOfT= instanceOfT;
}

在getMatches方法中,您可以執行以下操作:

return instanceOfT.generateMatches(doc);

您的問題是您沒有T類任何對象的句柄。 只是說T.generateMatches(doc)意味着你正在對T類中的靜態方法進行靜態調用。 您需要有一個類型為T變量來調用實例方法。

問題是什么 ?

原因很清楚 - “T.generateMatches(doc);” 通過T調用generateMatches,T是類型(類/接口),而不是實例。

暫無
暫無

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

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