Optional<Double>对应的Java字段描述符是什么?
Java Optional的字段描述符问题解答
OptionalLjava/util/Optional;
Java泛型采用类型擦除机制,字节码层面不会保留泛型参数的具体类型信息。对于字段来说,仅会记录擦除后的原始类型,也就是Optional本身,所以对应的字段描述符就是Ljava/util/Optional;。
你之前尝试的Ljava/util/Optional/Double写法是错误的——这种格式是用来表示类的内部类(比如OuterClass.InnerClass对应的描述符是Lcom/example/OuterClass/InnerClass;),但Optional并没有名为Double的内部类,自然无法被识别。
补充说明:如果是方法的参数或返回值需要携带泛型信息,会通过方法的Signature属性来记录,格式类似Ljava/util/Optional<Ljava/lang/Double;>;,但这不属于字段描述符的范畴,字段描述符始终只反映擦除后的原始类型。
内容的提问来源于stack exchange,提问作者notabot
相关产品推荐
相关产品推荐

