我正在玩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