2011-12-02 40 views
3

是否可以根据参数更改Java中的方法签名?Java。如何更改方法签名

实施例:

给定的类,与通用参数MyItem<T>。 假设这个类有一个方法,返回T 给定第二个类'myReturner()',其中包含方法myreturn(MyItem<T>)

问:

我可以做回myreturn(MyItem<T>)一个T类型的对象,这取决于MyItem的泛型参数?

我想这是不可能的,因为签名是在Java编译期间设置的,并且T在编译时不知道。 如果是这样,模拟一个方法的最好方法是什么,它会根据参数返回不同的对象? 正在为每个参数类型编写一个自己的方法的唯一途径?

+0

,为什么它是可能的:编译Java时,只输出'对象myreturn(MyItem)'的方法,删除任何通用信息。这种方法显然可以接受任何对象。 – Viruzzo

+0

据我猜测,Viruzzo的链接应该在这个链接的某处:docs.oracle.com/javase/tutorial/java/generics/methods.html – Crowie

回答

7

这样的事情?

private <T> T getService(Class<T> type) { 
    T service = ServiceTracker.retrieveService(type); 
    return service; 
} 
3

你的意思是这样的:

<T> T myMethod(MyItem<T> item) 

0

你可以,如果你还让全班通用于同一类型的T,是这样的:

import java.util.ArrayList; 

public class MyReturn<T> { 

    public T myReturn(ArrayList<T> list){ 
     return null; //Your code here 
    } 
} 
0

我想你想是这样的:

public static void main(String[] args) { 
    String bla = myMethod(new MyItem<String>()); 
} 

public static <T> T myMethod(MyItem<T> item) { 
    return null; 
} 

public class MyItem<T> { 
    //just a dummy 
}