Generics Groovy中的泛型方法

Generics Groovy中的泛型方法,generics,groovy,Generics,Groovy,我目前正在学习Groovy,我一直在使用泛型方法 我想用从参数类型推断出的泛型返回类型定义泛型方法 在Java中,签名是: <T> T getBean(String name, Class<T> requiredType); T getBean(字符串名,类requiredType); 如何在Groovy中实现它?这在Groovy 2.2.1中起作用: class MyCollection { def map public <T> voi

我目前正在学习Groovy,我一直在使用泛型方法

我想用从参数类型推断出的泛型返回类型定义泛型方法

在Java中,签名是:

<T> T getBean(String name, Class<T> requiredType);
T getBean(字符串名,类requiredType);

如何在Groovy中实现它?

这在Groovy 2.2.1中起作用:

class MyCollection {
    def map

    public <T> void setMap(Map<String,T> map) {
        this.map = map
    }

    public <T> T getBean(String name, Class<T> requiredType) {
        return map.get(name)
    }
}

def myc = new MyCollection()
Map<String,Integer> myMap = new HashMap<String,Integer>()
myMap.put("abc",123)
myMap.put("ijk",456)
myc.setMap(myMap)

assert 123 == myc.getBean("abc", Integer.class)
assert 456 == myc.getBean("ijk", Integer.class)
class MyCollection{
def映射
公共无效集合映射(映射映射){
this.map=map
}
公共T getBean(字符串名称,类requiredType){
返回map.get(名称)
}
}
def myc=新的MyCollection()
Map myMap=newhashmap()
myMap.put(“abc”,123)
myMap.put(“ijk”,456)
myc.setMap(myMap)
assert 123==myc.getBean(“abc”,Integer.class)
assert 456==myc.getBean(“ijk”,Integer.class)
请注意,该方法是公共的。如果该方法写为“包保护”,它就不会为我编译

但是,此编辑适用于包范围:

import groovy.transform.PackageScope

class MyCollection {
    // snip

    @PackageScope <T> T getBean(String name, Class<T> requiredType) {
导入groovy.transform.PackageScope
类MyCollection{
//剪断
@PackageScope T getBean(字符串名称,类requiredType){

groovy方法在默认情况下不是公共的吗?请查看原始帖子中的链接。我相信这是关于StackO的重复问题。谢谢。这就是我想要的。