gpt4 book ai didi

generics - Groovy 中的泛型方法

转载 作者:行者123 更新时间:2023-12-02 19:33:28 24 4
gpt4 key购买 nike

我目前正在学习 Groovy,但我被通用方法困住了。

我想定义具有从参数类型推断的泛型返回类型的泛型方法。

在 Java 中,签名为:

<T> T getBean(String name, Class<T> 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)

请注意,该方法是公共(public)的。如果该方法被编写为“受包保护”,它不会为我编译。

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

import groovy.transform.PackageScope

class MyCollection {
// snip

@PackageScope <T> T getBean(String name, Class<T> requiredType) {

关于generics - Groovy 中的泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22427763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com