enum Thing implements HasCaste {
Type1 {
@Override
public Class< String> getCaste( ) {
}
} , Type2 {
@Override
public Class< Integer> getCaste( ) {
}
} ;
public static void main
( String [ ] args
) { Class< String> c = Type1.getCaste ( ) ;
}
}
interface HasCaste {
public Class<?> getCaste( ) ;
}
ZW51bSBUaGluZyBpbXBsZW1lbnRzIEhhc0Nhc3RlIHsKICAgIFR5cGUxIHsKICAgICAgICBAT3ZlcnJpZGUKICAgICAgICBwdWJsaWMgQ2xhc3M8U3RyaW5nPiBnZXRDYXN0ZSgpIHsKICAgICAgICAgICAgcmV0dXJuIFN0cmluZy5jbGFzczsKICAgICAgICB9CiAgICB9LCBUeXBlMiB7CiAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgcHVibGljIENsYXNzPEludGVnZXI+IGdldENhc3RlKCkgewogICAgICAgICAgICByZXR1cm4gSW50ZWdlci5jbGFzczsKICAgICAgICB9CiAgICB9OwogICAgCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgQ2xhc3M8U3RyaW5nPiBjID0gVHlwZTEuZ2V0Q2FzdGUoKTsKICAgIH0KfQoKaW50ZXJmYWNlIEhhc0Nhc3RlIHsKICAgIHB1YmxpYyBDbGFzczw/PiBnZXRDYXN0ZSgpOwp9