gpt4 book ai didi

java - 代码模型 : how to check if I need to generate a generic type?

转载 作者:行者123 更新时间:2023-12-01 04:33:03 30 4
gpt4 key购买 nike

我正在浏览类中的方法,然后在另一个地方生成具有不同名称的方法 - 参数和返回类型是相同的,我通过 method.getParameters()、method.isGeneric() 等检查它们

因此,在原始类中定义如下:

public void fun1(T a, T b){ //something...}

我想得到:

public <T> void anotherName(T a, T b) { //something }

这里有一个相关的问题演示了如何在类的开头添加 : Sun CodeModel generic method

JTypeVar t = checkedMethod.generify("T"); 
checkedMethod.param(jCodeModel.ref("LinkedList").narrow(t), "list");

但是,我想在循环中检查所有方法并确定其中哪些方法具有泛型类型,因此需要在名称前添加 < T> 。如果我泛化所有方法,就会出现这样的情况:

public <String> String fun2(String a, String b);

然后不清楚我是否愿意分配

String s = fun2("s","s");

有没有办法检查给定类型是否是已知的 Java 类型?

最佳答案

不要调用“getParameters”,而使用“getGenericParameterTypes”。对于您的示例,您将获得一个由两个“Type”实例组成的数组。现在“类型”可以是

  • 类(如字符串)
  • 参数化类型(= 包含泛型的类型,例如列表)
  • 类型变量(如“T”)

您可以循环参数并执行“instanceof”来分析您正在处理的类型,然后采用您的代码。

这是一个关于这个主题的非常好的博客:http://blog.vityuk.com/2011/03/java-generics-and-reflection.html

关于java - 代码模型 : how to check if I need to generate a generic type?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17740210/

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