hashCode()、equals()、toString() などの標準 Object メソッドをプロキシしていない InvocationHandler の実装を報告します。
これらのメソッドの処理に失敗すると、プロキシインスタンスに対してメソッドを呼び出すときに予期しない問題が発生する可能性があります。
例:
InvocationHandler myHandler = (proxy, method, params) -> {
System.out.println("Hello World!");
return null;
};
Runnable myProxy = (Runnable) Proxy.newProxyInstance(
Thread.currentThread().getContextClassLoader(),
new Class[] {Runnable.class}, myHandler
);
このコードスニペットは、Runnable.run() メソッドのみをプロキシするように設計されています。
ただし、hashCode() などの Object メソッドの呼び出しもプロキシされます。
そのため、myProxy を HashSet に追加する場合などに NullPointerException のような問題が発生する可能性があります。
2020.2 の新機能です