したがって、このリストはClass
インスタンスです。私はそれをクラスによって宣言されたConstructor
のリストに変換したいと思います。メソッド参照で使用されるメソッド - 未使用として認識される
私は彼らの宣言コンストラクタにクラスをマッピングし、collect
でそれを平ら:
services.stream()
.map(Class::getDeclaredConstructors)
.collect(ArrayList::new,
this::collectConstructors,
List::addAll)
私が使用してそれが静的ではない理由であるクラスコンテキストへのアクセスを必要とする方法を、収集のために。
private void collectConstructors(List<Constructor> l, Constructor<?>[] arr) {
if (arr.length == 0) {
return;
}
Class<?> clz = arr[0].getDeclaringClass();
if (arr.length > 1) {
throw new MoreThanOneConstructor(clz);
}
if (!Modifier.isPublic(arr[0].getModifiers())) {
throw new NoVisibleConstructor(clz);
}
l.add(arr[0]);
findDefinition(clz).setConstructor(arr[0]);
}
いいです、すべてうまくいきます。悪い点は、IntelliJとSonarQubeの両方で、方法collectConstructors
が使用されていないことです。醜い、またはむしろ面白いですが、IntelliJはメソッドを使用していることを完全に知っています。そのメソッドをクリックすると、対応するメソッドが強調表示されます。
どのようにツールが私に教えてくれるのですか?方法は使用されていません。ツールのサポートがありませんか?私のすごいコード?それは何ですか?
ツールのサポートがありません – Holger
新しい機能があなたの下にあるレイヤーに追加されると、常にバグがあります。私はこれがちょっとした(そして簡単に修正可能な)省略であったと確信しています。 IntelliJはバグ報告に非常に敏感ですので、報告することを検討してください。 –
私はあなたがsonarLintを使用していると思いますが、その問題はそれから来ていると思いますか?私が正しい場合:どのバージョンですか? – benzonico