public class Main {
static class HasId< I> { }
static class HasStringId extends HasId< String> { }
static class Alert< T extends /*Some*/ Object> extends HasStringId { }
static class BaseController< M extends HasId< String>> {
// abstract Class<M> getModelClass();
}
@SuppressWarnings( "rawtypes" )
static class AlertController extends BaseController< Alert> { // error here
// @Override Class<Alert> getModelClass() {
// return Alert.class;
// }
}
public static void main
( String [ ] args
) { } }
cHVibGljIGNsYXNzIE1haW4gewogICAgCglzdGF0aWMgY2xhc3MgSGFzSWQ8ST4ge30KCXN0YXRpYyBjbGFzcyBIYXNTdHJpbmdJZCBleHRlbmRzIEhhc0lkPFN0cmluZz4ge30KCXN0YXRpYyBjbGFzcyBBbGVydDxUIGV4dGVuZHMgLypTb21lKi9PYmplY3Q+IGV4dGVuZHMgSGFzU3RyaW5nSWQge30KCXN0YXRpYyBjbGFzcyBCYXNlQ29udHJvbGxlcjxNIGV4dGVuZHMgSGFzSWQ8U3RyaW5nPj4gewoJICAgIC8vIGFic3RyYWN0IENsYXNzPE0+IGdldE1vZGVsQ2xhc3MoKTsKCX0KCUBTdXBwcmVzc1dhcm5pbmdzKCJyYXd0eXBlcyIpCglzdGF0aWMgY2xhc3MgQWxlcnRDb250cm9sbGVyIGV4dGVuZHMgQmFzZUNvbnRyb2xsZXI8QWxlcnQ+IHsgLy8gZXJyb3IgaGVyZQoJICAgIC8vIEBPdmVycmlkZSBDbGFzczxBbGVydD4gZ2V0TW9kZWxDbGFzcygpIHsKCSAgICAvLyAgICAgcmV0dXJuIEFsZXJ0LmNsYXNzOwoJICAgIC8vIH0KCX0KCQoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeyB9Cn0=