gpt4 book ai didi

java - 显示已编译类文件中的泛型类型参数

转载 作者:行者123 更新时间:2023-11-30 07:23:32 25 4
gpt4 key购买 nike

是否有类似于 javap 的工具可以显示具有原始(未删除)类型的方法和字段?

我知道类型信息是erased编译源代码时。然而,编译器必须以某种方式知道,因为它能够确定我对库方法的调用是否匹配它们的签名,即使库已经编译成类文件。所以至少在理论上,应该可以检索类型信息。

我进一步搜索并找到了这个答案: Where are generic types stored in java class files?这让我想到了getGeneric...()方法。所以在我看来,类型信息以某种复杂的方式存储在类文件中,这些方法允许获取它。但到目前为止,我还没有找到可以显示此信息的(命令行)工具。

最佳答案

您使用的是旧版本的 javap

$ javap -version
1.7.0

$ javap java.util.List
Compiled from "List.java"
public interface java.util.List<E> extends java.util.Collection<E> {
public abstract int size();
public abstract boolean isEmpty();
public abstract boolean contains(java.lang.Object);
public abstract java.util.Iterator<E> iterator();
public abstract java.lang.Object[] toArray();
public abstract <T extends java/lang/Object> T[] toArray(T[]);
public abstract boolean add(E);
public abstract boolean remove(java.lang.Object);
public abstract boolean containsAll(java.util.Collection<?>);
public abstract boolean addAll(java.util.Collection<? extends E>);
public abstract boolean addAll(int, java.util.Collection<? extends E>);
public abstract boolean removeAll(java.util.Collection<?>);
public abstract boolean retainAll(java.util.Collection<?>);
public abstract void clear();
public abstract boolean equals(java.lang.Object);
public abstract int hashCode();
public abstract E get(int);
public abstract E set(int, E);
public abstract void add(int, E);
public abstract E remove(int);
public abstract int indexOf(java.lang.Object);
public abstract int lastIndexOf(java.lang.Object);
public abstract java.util.ListIterator<E> listIterator();
public abstract java.util.ListIterator<E> listIterator(int);
public abstract java.util.List<E> subList(int, int);
}

关于java - 显示已编译类文件中的泛型类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11966091/

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