redhat-developer / redhat-developer/vscode-java
Build/compilation issue with wildcard types
Personne n'a encore pris cette issue.
- Langage dominant
- TypeScript
- Étoiles
- 2.3k
- Forks
- 546
- Merge moyen
- 20 h 1 min
- PR mergées (30 j)
- 11
Description
Following is some sample code to replicate the issue:
import java.util.List;
public class Tester {
<T extends List<? extends Entry<?, ?>>> Entry<?, ?> test(T input) {
return ConcreteEntry.from(input.get(0)); // Error here
}
public static void main(String[] args) {
Tester tester = new Tester();
System.out.println(tester.test(List.of(new ConcreteEntry<>("a", 1))));
}
}
interface Entry<K, V> {
K getKey();
V getValue();
}
class ConcreteEntry<K, V> implements Entry<K, V> {
private final K key;
private final V value;
public ConcreteEntry(K key, V value) {
this.key = key;
this.value = value;
}
public static <K, V> ConcreteEntry<K, V> from(Entry<K, V> entry) {
return new ConcreteEntry<>(entry.getKey(), entry.getValue());
}
@Override
public K getKey() {
return key;
}
@Override
public V getValue() {
return value;
}
@Override
public String toString() {
return this.key + "=" + this.value;
}
}
The test method throws the error The method from(Entry<K,V>) in the type ConcreteEntry is not applicable for the arguments (capture#1-of ? extends Entry<?,?>) Java(67108979). The expected behaviour is correct compilation. However, enabling the "java.jdt.ls.javac.enabled" works, but is not an ideal solution.
This occurs with the latest Language Support for Java(TM) by Red Hat - v1.42.0.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Reproduisez le diagnostic signalé avec l’exemple Java de l’issue en utilisant Language Support for Java v1.42.0, d’abord avec le chemin normal du compilateur, puis avec java.jdt.ls.javac.enabled activé. Comparez les deux résultats et confirmez que l’exemple de type wildcard se compile sans erreur avec le chemin corrigé.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- java
- Domaine
- tooling
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 38/100