0
votes

Conversion d'une classe d'emballage entier en classe primitive int

J'ai essayé de convertir une classe d'emballage entier en classe primitive int. Je n'ai pas encore trouvé de bonne façon de compiler le code. J'utilise Intellij Idea, Java 11 Amazon Coretto, mais j'ai besoin de l'exécuter sur un ordinateur qui exécute Java 8.

Voici le code d'origine ci-dessous: P>

int thisLine = this.get(i).intValue();
int otherLine = other.get(i).intValue();
if (this.get(i) != other.get(i)) {
    if (thisLine < otherLine) {
        return -1;
    } else if (thisLine > otherLine) {
        return 1;


2 commentaires

Est-il possible que vous utilisez certains entier classe autre que java.lang.integer ?


Vous utilisez probablement une classe entière incorrecte, il n'est pas nécessaire de faire de la boxe / de la boîte de consigne entre Java.Lang.Integer et le type primitif INT.


3 Réponses :


2
votes

Ceci est l'indice dans le message d'erreur qui l'explique:

où entier est une variable de type: p>

INTEGER étend l'objet déclaré en classe p> blockQquote>

INTEGER code> est pas strud> java.lang.integer code> mais une variable de type avec un nom confus ... P >

Vous avez déclaré la variable de type ici: p> xxx pré>

C'est comme si vous le déclariez comme si vous le déclariez comme suit: p> xxx pré>

Mais en nommant la variable de type entier code> au lieu de t code>, puis vous essayez de lancer des objets du type t code> sur int Code> plus tard sur. p>

Fixez-le en ne déclarant pas un paramètre de type nommé integer code>, vous n'avez pas besoin d'ici: p>

static class Line extends ArrayList<Integer> implements Comparable<Line<Integer>>


3 commentaires

Félicitations @joeys! Vous venez d'être introduit (et aucun trop doucement, on pourrait ajouter ...) au monde merveilleux de génériques . Vérifiez-le quand vous avez du temps à tuer; Ils sont en fait assez utiles une fois que vous avez appris à les connaître.


Est-ce que une ligne suffit?


@Joeys oui alors .Intvalue () peut être utilisé



0
votes

en votre classe "INTEGER" n'est pas un java.lang.Integer mais une classe générique qui est la raison


0 commentaires

1
votes

Vous ne devriez pas avoir à lancer un entier à un INT du tout. La classe entier a .compareto code> qui comparent deux entiers.

a 0 signifie que la valeur1 est égale à la valeur2. -1 est la valeur1 est inférieure à la valeur2 et une valeur 1 est supérieure à la valeur2. p>

Essayez ce qui suit: P>

public int compareTo(Line<Integer> other) {
  //get the smallest length
  int len = this.size() <= other.size() ? this.size() : other.size();
  for (int i = 0; i < len; i++) {
    int compare = this.get(i).compareTo(other.get(i));
    if (compare != 0) { //if compare is not zero they are not the same value
       return compare;
    }
  }
  //If we get here, everything in both lists are the same up to "len"
  return 0;
}


0 commentaires