Suspicious 'InvocationHandler' implementation
Reports implementations of InvocationHandler
that do not proxy standard Object
methods like hashCode()
, equals()
, and toString()
.
Failing to handle these methods might cause unexpected problems upon calling them on a proxy instance.
Example:
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
);
This code snippet is designed to only proxy the Runnable.run()
method. However, calls to any Object
methods, like hashCode()
, are proxied as well. This can lead to problems like a NullPointerException
, for example, when adding myProxy
to a HashSet
.
New in 2020.2
Inspection Details | |
---|---|
Available in: | IntelliJ IDEA 2023.3, Qodana for JVM 2023.3 |
Plugin: | Java, 233.SNAPSHOT |
Last modified: 13 July 2023