gpt4 book ai didi

Java:如何检查泛型类类型定义?

转载 作者:搜寻专家 更新时间:2023-10-31 08:08:49 24 4
gpt4 key购买 nike

这个想法是定义一个基类,它可以调用派生类中定义的方法,但在创建时我想确保,这些方法是完全根据要求定义的,即这些方法只接受一个参数,一个 HashMap <String String >.

到目前为止,我能够使用以下代码检查该方法是否仅包含一个参数并且它属于 HashMap 类,但是我如何检查通用定义是否为 <String, String > ?

public boolean isMethodParameterValid(final Method method) {
final Class<?>[] parameters = method.getParameterTypes();
return ((parameters.length == 1) && parameters[0].isAssignableFrom(HashMap.class));
}

最佳答案

确实存在类型删除,但它不适用于变量/字段 - 仅适用于类型参数被删除并替换为其上限的类的定义。

这意味着您所要求的可以实现。以下是检查方法第一个参数的通用参数的方法:

class Z
{
public void f(List<String> lst) { }
}

...

Method m = Z.class.getMethod("f", List.class);
Type t = m.getGenericParameterTypes()[0];
if(t instanceof ParameterizedType) {
ParameterizedType pt = (ParameterizedType) t;
System.out.println("Generic params of first argument: " + Arrays.toString(pt.getActualTypeArguments()));
}

关于Java:如何检查泛型类类型定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/461106/

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