Java 8 Introduced ThreadLocal.withInitial
which is a simpler alternative to creating an anonymous inner class to initialise a
ThreadLocal
instance.
This rule raises an issue when a ThreadLocal
anonymous inner class can be replaced by a call to
ThreadLocal.withInitial
.
ThreadLocal<List<String>> myThreadLocal = new ThreadLocal<List<String>>() { // Noncompliant @Override protected List<String> initialValue() { return new ArrayList<String>(); } };
ThreadLocal<List<String>> myThreadLocal = ThreadLocal.withInitial(ArrayList::new);