Nous venons de recevoir un rapport d'accident que je ne comprends pas honnêtement, et je suis Je ne sais même pas si c'est une bonne question en tant que telle ... mais je ne vois rien.HTC M8 (6.0.1): TreeSet <Long> .contains (Long) throws exception de cast de la classe: "ne peut pas lancer Double à Long"
J'ai le code suivant:
public class LeisureEventSelectedCategories {
private Set<Long> ids = new TreeSet<>();
public boolean contains(Long id) {
if (id == null) {
return false;
}
return ids.contains(id);
}
Si la ligne return ids.contains(id)
se bloque à l'exception suivante:
java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Long
at java.lang.Long.compareTo(Long.java)
at java.util.TreeMap.find(TreeMap.java)
at java.util.TreeMap.findByObject(TreeMap.java)
at java.util.TreeMap.containsKey(TreeMap.java)
at java.util.TreeSet.contains(TreeSet.java)
at com.acme.b.a.d.a(LeisureEventSelectedCategories.java:50)
Le Long
que je reçois ici est d'un Map<String, Long>
.
leisureEventSelectedCategories.contains(eventCategoryNameToEventId.get(categoryName)) || leisurePlaceSelectedCategories.contains(placeCategoryNameToPlaceId.get(categoryName)),
Où
Map<String, Long> placeCategoryNameToPlaceId = new LinkedHashMap<>();
Map<String, Long> eventCategoryNameToEventId = new LinkedHashMap<>();
Outre le remplacement de la TreeSet
avec un HashSet
et en utilisant Collections.sort()
où je besoin, ce qui pourrait être la cause et comment dois-je éviter dans l'avenir?
EDIT:
image de valeurs dans leisureEventSelectedCategories
après avoir sélectionné tous les éléments qui viennent du serveur:
image de valeurs dans eventCategoryNameToPlaceId
pas possible avec ce code ... montrez-nous plutôt comment appelez-vous la méthode *** contains *** –
J'ai montré comment j'appelle la méthode 'contains' ... et je sais que ça ne devrait pas être possible, mais j'ai obtenu un rapport d'accident avec cette exception>.> Je vais remplacer le 'TreeSet' avec un 'LinkedHashSet ' comme correctif immédiat –
EpicPandaForce
Btw Je ne pouvais pas produire ce crash sur un appareil Samsung ni mon Nexus 5X. – EpicPandaForce