IntelliJ IDEA を好きになる10の理由

f:id:Naotsugu:20140413013029p:plain


単純な1行メソッド

以下の様なメソッド内部が単行の場合、

static class MethodInterceptorsPair {
    ・・・
    public MethodInterceptorsPair(Method method) {
      this.method = method;
    }


こんな風に巻き上げて表示する
f:id:Naotsugu:20140413014721p:plain



無名クラス

Provider インターフェースを無名クラスでインスタンス化して返却する以下のコードがあると、

  public <T> Provider<T> getFactory(Class<T> type) throws NoSuchMethodException {
    ・・・
    return new Provider<T>() {
      public T get() {
        try {
          return constructionProxy.newInstance();
        }
        catch (InvocationTargetException e) {
          throw new RuntimeException(e);
        }
      }
    };
  }


こんな風に折り畳まれて表示する。
f:id:Naotsugu:20140413014240p:plain



これが

    enhancer.setCallbackFilter(new CallbackFilter() {
      public int accept(Method method) {
        return indices.get(method);
      }
    });

こう
f:id:Naotsugu:20140413015206p:plain


さらに以下の様なコードは

  Map<Constructor<?>, ConstructionProxy<?>> constructionProxies
      = new ReferenceCache<Constructor<?>, ConstructionProxy<?>>() {
    protected ConstructionProxy<?> create(Constructor<?> constructor) {
      return createConstructionProxy(constructor);
    }
  };

こんな感じに
f:id:Naotsugu:20140413014342p:plain



ダイアモンドも

これが

Map<Key<?>, BindingImpl<?>> bindings = new HashMap<Key<?>, BindingImpl<?>>();


こんな風に
f:id:Naotsugu:20140413021614p:plain