Java的。如何更改方法签名

时间:2011-12-02 14:26:50

标签: java generics methods signature

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

示例:

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

问题:

我可以让myreturn(MyItem<T>)返回一个T对象,具体取决于MyItem的泛型参数吗?

我认为这是不可能的,因为签名是在Java编译期间设置的,而T在编译时是不可知的。 如果是这样,模拟方法的最佳方法是什么,它将返回不同的对象,具体取决于参数? 是为每种参数类型编写自己的方法唯一的方法吗?

5 个答案:

答案 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
}