我正在玩ASM并分析类的泛型签名。本节中的文件可能包含的内容描述here并且可以与下面的语法来概括:什么是::在签名中的含义?
TypeSignature:ž| C | B | S |我| F | J | D | FieldTypeSignature
FieldTypeSignature:ClassTypeSignature | [TypeSignature | TypeVar
ClassTypeSignature:11d中(/ Id)的 TypeArgs? *; *
TypeArgs(同上TypeArgs。):< TypeArg +>
TypeArg: ** | (+ | - )? FieldTypeSignature *
TypeVar:T Id;
但是,我发现对于这不是真的一个案例:
trait SomeTrait
class SomeClass[T <: SomeTrait]
泛型签名SomeClass
:<T::LSomeTrait;>Ljava/lang/Object;
我不明白,为什么::
出现这里是什么意思。从语法角度来看,加倍:
是无效的。有趣的是,如果我将trait
替换为abstract class
,::
将替换为单个:
(期望的)。
任何想法?
http://stackoverflow.com/questions/20001427/double-colon-operator-in-java-8 – nullpointer
@nullpointer如何可能的重复适用于此? – sepp2k