package Ġcom . h udson . wan android . gener ics Ċ Ċ import Ġjava . lang . reflect . Parameterized Type Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠH udson Ġon Ġ 2 0 2 0 / 7 / 2 5 . Ċ Ġ*/ Ċ open Ġclass ĠGeneric Clazz 2 < Data 1 , ĠData 2 >{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġgeneric Super class Ġ= Ġjava Class . generic Super class ĊĠĠĠĠĠĠĠ Ġvar Ġtype : ĠParameter ized Type ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġwhile ( generic Super class Ġ!= Ġnull Ġ&& Ġtype Ġ== Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( generic Super class Ġis ĠParameter ized Type ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġgeneric Super class ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgeneric Super class Ġ= Ġ( generic Super class Ġas ĠClass < *> ). generic Super class ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( type Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Data Class Ġ= Ġtype ?. actual Type Arguments ! ![ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecond Data Class Ġ= Ġtype ?. actual Type Arguments ! ![ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" generic Ġclass : Ġ$ first Data Class Ġ Ġ$ second Data Class , Ġcurrent : Ġ$ java Class , Ġtype : Ġ$ type ") ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" cannot Ġfind Ġgeneric Ġtype ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }