その時に書きたいものを書きます

その時に書きたいものを書くんです

匿名クラスについて

    public static WebSocket<JsonNode> ws(){
        final String username = session("username");
        return new WebSocket<JsonNode>(){
            @Override
            public void onReady(final WebSocket.In<JsonNode> in,
                                final WebSocket.Out<JsonNode> out){
                try{
                    WebSocketActor.join(username, in, out);
                }catch(Exception e){
                    Logger.error("Can't connect WebSocket");
                    e.printStackTrace();
                }
            }
        };
    }

この例のnew ~ };の部分。 WebSocketは抽象クラスである。抽象クラスは、本来であれば継承したクラスを定義して、そいつを使わなければインスタンス化できない。しかし、匿名クラスという仕組みを利用すれば、継承したクラスを定義しなくとも、上記のような書き方で抽象メソッドの実装やインスタンス化が一気にできてしまう。