gpt4 book ai didi

java - Eclipse:SourceType 到 Class(或获取该类的当前参数)

转载 作者:行者123 更新时间:2023-11-30 08:03:08 27 4
gpt4 key购买 nike

我正在尝试搜索扩展某个接口(interface)的 IJavaProject 中的所有类。这个接口(interface)是Generic的,我想获取每个实现的当前类型参数。

现在我有了代表每个实现的 SourceType,但我无法获取此类的当前参数。这是我的类(class)的示例:

public class PersonDaoImpl extends AbstractDao<PersonPk, Person> {
...
}

我的目标是获取PersonPk和Person这两个参数。

如果可以将此 SourceType 转换为类,那么管理它会更好。

谢谢!

最佳答案

要获取类型父类(super class)的类型参数(IType sourceType),请使用

String superSignature = sourceType.getSuperclassTypeSignature();
for (String typeArgument : Signature.getTypeArguments(superSignature))
System.out.println(Signature.getSignatureSimpleName(typeArgument));

实用程序签名org.eclipse.jdt.core.Signature

要从其完全限定名称中获取下一个 IType,请使用:

IJavaProject project = sourceType.getJavaProject();
IType type = project.findType(qualifiedTypeName);

如果您有未解析类型签名(以Q开头),则首先使用它来获取限定名称:

String[] qualifiedNames = sourceType.resolveType(typeSignature);

有关详细信息,请参阅 javadoc。

在 IDE 中,工作区中的类不会作为 Class 加载到当前 JVM(运行 IDE)中,因为您的工作区中文件的每次更改工作区需要将新类加载到 JVM 中,从而导致巨大的内存问题,因此即使通过某些 hack 可以实现这一点,也强烈建议不要这样做!现有的表示(Java 模型和 AST)应该足以满足您的所有处理需求。

关于java - Eclipse:SourceType 到 Class(或获取该类的当前参数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31580186/

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