[英]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.