是否可以根据参数更改Java中的方法签名?
示例:
给定一个类,使用泛型参数MyItem<T>
。
假设此类有一个返回T
的方法
给定第二个类'myReturner()',其中包含方法myreturn(MyItem<T>)
。
问题:
我可以让myreturn(MyItem<T>)
返回一个T对象,具体取决于MyItem的泛型参数吗?
我认为这是不可能的,因为签名是在Java编译期间设置的,而T在编译时是不可知的。 如果是这样,模拟方法的最佳方法是什么,它将返回不同的对象,具体取决于参数? 是为每种参数类型编写自己的方法唯一的方法吗?
答案 0 :(得分:7)
这样的东西?
private <T> T getService(Class<T> type) {
T service = ServiceTracker.retrieveService(type);
return service;
}
答案 1 :(得分:3)
你的意思是这样的:
<T> T myMethod(MyItem<T> item)
答案 2 :(得分:0)
如果你也使整个类对同一类型T具有通用性,你可以这样:
import java.util.ArrayList;
public class MyReturn<T> {
public T myReturn(ArrayList<T> list){
return null; //Your code here
}
}
答案 3 :(得分:0)
一般的返回类型是完全可能的。请在此处查看:How do I make the method return type generic?或此处:Java Generics: Generic type defined as return type only
答案 4 :(得分: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
}