class Ideone
{
{
// your code goes here
}
}
class Message { }
class ObjectMessage extends Message { }
class Session { }
/*
interface Foo {
void method();
}
abstract class BaseFoo implements Foo {
}
class DerivedFoo extends BaseFoo {
@Override
public void method() {
}
}
*/
interface MessageFactory<T extends Message> {
public T create(Session session);
}
abstract class MessageType<T extends Message> implements MessageFactory<T>{
public static final MessageType<ObjectMessage> PLAYER_REGISTER = new MessageType<ObjectMessage>() {
@Override
public ObjectMessage create(Session session) { //Error, remove @Override annotation
return null;
}
};
private MessageType(){ }
}
Y2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCX0KfQoKY2xhc3MgTWVzc2FnZSB7IH0KY2xhc3MgT2JqZWN0TWVzc2FnZSBleHRlbmRzIE1lc3NhZ2UgeyB9CmNsYXNzIFNlc3Npb24geyB9CgovKgppbnRlcmZhY2UgRm9vIHsKICAgIHZvaWQgbWV0aG9kKCk7Cn0KCmFic3RyYWN0IGNsYXNzIEJhc2VGb28gaW1wbGVtZW50cyBGb28gewp9CgpjbGFzcyBEZXJpdmVkRm9vIGV4dGVuZHMgQmFzZUZvbyB7CiAgICBAT3ZlcnJpZGUKICAgIHB1YmxpYyB2b2lkIG1ldGhvZCgpIHsKICAgIH0KfQoqLwoKaW50ZXJmYWNlIE1lc3NhZ2VGYWN0b3J5PFQgZXh0ZW5kcyBNZXNzYWdlPiB7CgogICAgcHVibGljIFQgY3JlYXRlKFNlc3Npb24gc2Vzc2lvbik7Cn0KCmFic3RyYWN0IGNsYXNzIE1lc3NhZ2VUeXBlPFQgZXh0ZW5kcyBNZXNzYWdlPiBpbXBsZW1lbnRzIE1lc3NhZ2VGYWN0b3J5PFQ+ewoKICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgTWVzc2FnZVR5cGU8T2JqZWN0TWVzc2FnZT4gUExBWUVSX1JFR0lTVEVSID0gbmV3IE1lc3NhZ2VUeXBlPE9iamVjdE1lc3NhZ2U+KCkgewoKICAgICAgICBAT3ZlcnJpZGUKICAgICAgICBwdWJsaWMgT2JqZWN0TWVzc2FnZSBjcmVhdGUoU2Vzc2lvbiBzZXNzaW9uKSB7IC8vRXJyb3IsIHJlbW92ZSBAT3ZlcnJpZGUgYW5ub3RhdGlvbgogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICB9OwoKICAgIHByaXZhdGUgTWVzc2FnZVR5cGUoKXsgfQp9Cg==