it-swarm.com.de

So werfen Sie ein Objekt in ein int

Wie kann ich ein Objekt in ein int in java umwandeln?

182
Sheehan Alam

Wenn Sie sicher sind, dass dieses Objekt eine Integer ist:

int i = (Integer) object;

Oder Sie können ab Java 7 gleichwertig schreiben:

int i = (int) object;

Achtung, es kann eine ClassCastException werfen, wenn Ihr Objekt keine Integer ist und eine NullPointerException , wenn Ihr Objekt null ist.

Auf diese Weise gehen Sie davon aus, dass Ihr Objekt eine Ganzzahl ist (das umschlossene int) und Sie entpacken es in einem int.

int ist ein Grundelement und kann daher nicht als Object gespeichert werden. Die einzige Möglichkeit besteht darin, eine int als/änderbar als Integer zu betrachten, die dann als Object gespeichert wird.


Wenn Ihr Objekt eine String ist, können Sie es mit der Methode Integer.valueOf() in ein einfaches int konvertieren:

int i = Integer.valueOf((String) object);

Es kann eine NumberFormatException werfen, wenn Ihr Objekt nicht wirklich eine String mit einer Ganzzahl als Inhalt ist.


Ressourcen:

Zum gleichen Thema:

339
Colin Hebert

Wenn das Objekt ein Integer-Objekt ist, können Sie Folgendes tun:

 int i = ((Integer) obj) .intValue (); 

Wenn das Objekt kein Integer-Objekt ist, müssen Sie den Typ erkennen und basierend auf seinem Typ konvertieren.

15
Erick Robertson

Szenario 1: einfacher Fall

Wenn garantiert ist, dass Ihr Objekt eine Integer ist, ist dies der einfache Weg:

int x = (Integer)yourObject;

Szenario 2: beliebiges numerisches Objekt

In Java implementieren Integer, Long, BigInteger usw. alle die Number-Schnittstelle, die eine Methode mit dem Namen intValue hat. Alle anderen benutzerdefinierten Typen mit einem numerischen Aspekt sollten auch Number implementieren (zum Beispiel: Age implements Number). Also kannst du:

int x = ((Number)yourObject).intValue();

Szenario 3: Analysieren Sie numerischen Text

Wenn Sie eine Benutzereingabe über die Befehlszeile (oder ein Textfeld usw.) akzeptieren, wird diese als String angezeigt. In diesem Fall können Sie Integer.parseInt(String string) verwenden:

String input = someBuffer.readLine();
int x = Integer.parseInt(input);

Wenn Sie als Object eine Eingabe erhalten, können Sie (String)input verwenden. Falls dies jedoch ein anderer Texttyp sein kann, input.toString():

int x = Integer.parseInt(input.toString());

Szenario 4: Identitätshash

In Java gibt es keine Zeiger. Object hat jedoch eine zeigerartige Standardimplementierung für hashCode(), die direkt über System.identityHashCode(Object o) verfügbar ist. Also kannst du:

int x = System.identityHashCode(yourObject);

Beachten Sie, dass dies nicht ein echter Zeigerwert ist. Die Speicheradresse von Objekten kann von der JVM geändert werden, während ihre Identitätshashes beibehalten werden. Außerdem können zwei lebende Objekte denselben Identitätshash haben.

Sie können auch object.hashCode() verwenden, es kann jedoch typspezifisch sein.

Szenario 5: eindeutiger Index

In denselben Fällen benötigen Sie für jedes Objekt einen eindeutigen Index, wie zum Beispiel automatisch inkrementierte ID-Werte in einer Datenbanktabelle (und anders als bei Identity-Hash, der nicht eindeutig ist). Eine einfache Beispielimplementierung dafür:

class ObjectIndexer {

    private int index = 0;

    private Map<Object, Integer> map = new WeakHashMap<>();

    public int indexFor(Object object) {
        if (map.containsKey(object)) {
            return map.get(object);
        } else {
            index++;
            map.put(object, index);
            return index;
        }
    }

}

Verwendungszweck:

ObjectIndexer indexer = new ObjectIndexer();
int x = indexer.indexFor(yourObject);    // 1
int y = indexer.indexFor(new Object());  // 2
int z = indexer.indexFor(yourObject);    // 1

Szenario 6: Enum-Mitglied

In Java-Enumerationsmitgliedern sind keine Ganzzahlen, sondern voll funktionsfähige Objekte (im Gegensatz zu C/C++). Wahrscheinlich ist es nie erforderlich, ein Enum-Objekt in int zu konvertieren, jedoch ordnet Java jedem Enumerationsmitglied automatisch eine Indexnummer zu. Auf diesen Index kann über Enum.ordinal() zugegriffen werden, zum Beispiel:

enum Foo { BAR, BAZ, QUX }

// ...

Object baz = Foo.BAZ;
int index = ((Enum)baz).ordinal(); // 1

 enter image description here

11
Dávid Horváth
@Deprecated
public static int toInt(Object obj)
{
    if (obj instanceof String)
    {
         return Integer.parseInt((String) obj);
    } else if (obj instanceof Number)
    {
         return ((Number) obj).intValue();
    } else
    {
         String toString = obj.toString();
         if (toString.matches("-?\d+"))
         {
              return Integer.parseInt(toString);
         }
         throw new IllegalArgumentException("This Object doesn't represent an int");
    }
}

Wie Sie sehen, ist dies nicht sehr effizient. Sie müssen einfach sicher sein, welche Art von Objekt Sie haben. Dann wandeln Sie es auf die richtige Weise in ein int.

10

Sie müssen es in eine Integer (Wrapper-Klasse von Int) umwandeln. Sie können dann die Integer-Methode intValue () verwenden, um das innere Int zu erhalten.

4

Antworten:

int i = ( Integer ) yourObject;

Wenn Ihr Objekt bereits eine ganze Zahl ist, wird es problemlos ausgeführt. dh:

Object yourObject = 1;
//  cast here

oder

Object yourObject = new Integer(1);
//  cast here

usw.

Wenn Ihr Objekt etwas anderes ist, müssen Sie es (wenn möglich) zuerst in ein int konvertieren:

String s = "1";
Object yourObject = Integer.parseInt(s);
//  cast here

Oder

String s = "1";
Object yourObject = Integer.valueOf( s );
//  cast here
4
OscarRyz

Ich verwende bei der Verarbeitung von Daten von GSON einen Einzeiler:

int i = object != null ? Double.valueOf(object.toString()).intValue() : 0;
3
int i = (Integer) object; //Type is Integer.

int i = Integer.parseInt((String)object); //Type is String.
2
Kerem Baydoğan

Du kannst nicht Eine int ist keine Object.

Integer ist zwar ein Object, aber ich bezweifle, dass Sie das meinen.

2
extraneon

Kann nicht gemacht werden Eine int ist kein Objekt, sondern ein primitiver Typ. Sie können es in Integer umwandeln und dann das Int erhalten.

 Integer i = (Integer) o; // throws ClassCastException if o.getClass() != Integer.class

 int num = i; //Java 1.5 or higher
2
Tom

Wenn die Object ursprünglich als Integer instanziiert wurde, können Sie sie mit dem Besetzungsoperator (Subtype) auf eine int abstufen.

Object object = new Integer(10);
int i = (Integer) object;

Beachten Sie, dass dies nur funktioniert, wenn Sie mindestens Java 1.5 mit Autoboxing-Funktion verwenden. Andernfalls müssen Sie i stattdessen als Integer deklarieren und dann intValue() aufrufen.

Aber wenn es anfangs gar nicht als Integer erstellt wurde, können Sie nicht so downcast werden. Dies würde zu einer ClassCastException mit dem ursprünglichen Klassennamen in der Nachricht führen. Wenn die toString() -Darstellung des Objekts, wie sie von String#valueOf() erhalten wird, eine syntaktisch gültige Ganzzahl angibt (z. B. nur Ziffern, falls erforderlich mit einem Minuszeichen), können Sie Integer#valueOf() oder verwenden. new Integer() dafür.

Object object = "10";
int i = Integer.valueOf(String.valueOf(object));

Siehe auch:

2
BalusC

Ich denke, Sie fragen sich, warum Sie mit C oder C++ einen Objektzeiger wie eine Zahl bearbeiten können, aber Sie können eine Objektreferenz in Java nicht auf dieselbe Weise bearbeiten.

Objektverweise in Java sind keine Zeiger in C oder C++ ... Zeiger sind im Grunde sind Ganzzahlen, und Sie können sie wie jedes andere int bearbeiten. Referenzen sind absichtlich eine konkretere Abstraktion und können nicht wie Zeiger manipuliert werden.

1
romacafe
int[] getAdminIDList(String tableName, String attributeName, int value) throws SQLException {
    ArrayList list = null;
    Statement statement = conn.createStatement();
    ResultSet result = statement.executeQuery("SELECT admin_id FROM " + tableName + " WHERE " + attributeName + "='" + value + "'");
    while (result.next()) {
        list.add(result.getInt(1));
    }
    statement.close();
    int id[] = new int[list.size()];
    for (int i = 0; i < id.length; i++) {
        try {
            id[i] = ((Integer) list.get(i)).intValue();
        } catch(NullPointerException ne) {
        } catch(ClassCastException ch) {}
    }
    return id;
}
// enter code here

Dieser Code zeigt, warum ArrayList wichtig ist und warum wir es verwenden. Einfach int aus Object werfen. Vielleicht ist es hilfreich.

Wenn Sie einen String in int umwandeln möchten, verwenden Sie Integer.valueOf("123").

Die meisten anderen Objekte können jedoch nicht in int umgewandelt werden, da sie keinen int-Wert haben. Z.B. Ein XmlDocument hat keinen int-Wert.

1
Amy B

Für Beispielobjektvariable; hastaId

Object hastaId = session.getAttribute("hastaID");

Beispiel: Umwandeln eines Objekts in ein int, hastaID

int hastaID=Integer.parseInt(String.valueOf(hastaId));
1
user4391934

map.getValue () gibt den Objekttyp zurück so divide1 = me.getValue ()/2;

int divide1 = (Integer) me.getValue ()/2;

0
Nehal Pawar

Verweisen Sie auf diesen Code: 

public class sample 
{
  public static void main(String[] args) 
  {
    Object obj=new Object();
    int a=10,b=0;
    obj=a;
    b=(int)obj;

    System.out.println("Object="+obj+"\nB="+b);
  }
}
0
Vishal Tathe