Hoe een object naar een int te casten

Hoe kan ik een object casten naar een int in java?


Antwoord 1, autoriteit 100%

Als u zeker weet dat dit object een Integeris:

int i = (Integer) object;

Of, vanaf Java 7, kunt u op equivalente wijze schrijven:

int i = (int) object;

Pas op, het kan een ClassCastExceptionals uw object geen Integeren een NullPointerExceptionals uw object nullis.

Op deze manier ga je ervan uit dat je object een geheel getal is (de verpakte int) en pak je het uit in een int.

intis een primitief, dus het kan niet worden opgeslagen als een Object, de enige manier is om een intin overweging te nemen/in een kader te plaatsen als een Integeren vervolgens opgeslagen als een Object.


Als uw object een Stringis, kunt u de Integer.valueOf()methode om het om te zetten in een eenvoudige int :

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

Het kan een NumberFormatExceptionals uw object niet echt een Stringis met een geheel getal als inhoud.


Bronnen:

Over hetzelfde onderwerp:


Antwoord 2, autoriteit 5%

Scenario 1: eenvoudig geval

Als het gegarandeerd is dat uw object een Integeris, is dit de eenvoudige manier:

int x = (Integer)yourObject;

Scenario 2: elk numeriek object

In Java Integer, Long, BigIntegerenz. implementeren ze allemaal de Number-interface die een methode heeft met de naam intValue. Alle andere aangepaste typen met een numeriek aspect moeten ook Numberimplementeren (bijvoorbeeld: Age implements Number). Dus je kunt:

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

Scenario 3: numerieke tekst ontleden

Als je gebruikersinvoer accepteert vanaf de opdrachtregel (of tekstveld enz.), krijg je het als een String. In dit geval kunt u Integer.parseInt(String string)gebruiken:

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

Als u invoer krijgt als Object, kunt u (String)inputgebruiken, of, als het een ander teksttype kan hebben, input.toString():

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

Scenario 4: identiteitshash

In Java zijn er geen pointers. Objectheeft echter een pointer-achtige standaardimplementatie voor hashCode(), die direct beschikbaar is via System.identityHashCode(Object o). Dus je kunt:

int x = System.identityHashCode(yourObject);

Merk op dat dit geeneen echte pointerwaarde is. Het geheugenadres van objecten kan door de JVM worden gewijzigd terwijl hun identiteitshashes behouden blijven. Ook kunnen twee levende objecten dezelfde identiteitshash hebben.

U kunt ook object.hashCode()gebruiken, maar dit kan typespecifiek zijn.

Scenario 5: unieke index

In dezelfde gevallen heb je een unieke index nodig voor elk object, zoals het automatisch verhogen van ID-waarden in een databasetabel (en in tegenstelling tot identiteitshash die niet uniek is). Een eenvoudige voorbeeldimplementatie hiervoor:

class ObjectIndexer {
    private int index = 0;
    private Map<Object, Integer> map = new WeakHashMap<>();
    //                               or:
    //                                 new WeakIdentityHashMap<>();
    public int indexFor(Object object) {
        if (map.containsKey(object)) {
            return map.get(object);
        } else {
            index++;
            map.put(object, index);
            return index;
        }
    }
}

Gebruik:

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

Scenario 6: enum lid

In Java zijn enum-leden geen gehele getallen maar objecten met volledige functionaliteit (in tegenstelling tot bijvoorbeeld C/C++). Waarschijnlijk is het nooit nodig om een enum-object te converteren naar int, maar Java koppelt automatisch een indexnummer aan elk enum-lid. Deze index is toegankelijk via Enum.ordinal(), bijvoorbeeld:

enum Foo { BAR, BAZ, QUX }
// ...
Object baz = Foo.BAZ;
int index = ((Enum)baz).ordinal(); // 1


Antwoord 3, autoriteit 4%

Ervan uitgaande dat het object een Integerobject is, kunt u dit doen:

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

Als het object geen Integer-object is, moet u het type detecteren en het converteren op basis van het type.


Antwoord 4, autoriteit 3%

@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");
    }
}

Zoals je kunt zien, is dit geen zeer efficiënte manier om het te doen. Je moet gewoon zeker zijn van wat voor soort object je hebt. Converteer het vervolgens naar een int de juiste manier.


5

Je moet het naar een integer (int’s wrapper klasse) werpen. U kunt vervolgens de methode van intgalue () van intgaliën () gebruiken om de innerlijke int.

te verkrijgen


6

Antwoord:

int i = ( Integer ) yourObject;

Als, uw object al een geheel getal is, zal het soepel verlopen. IE:

Object yourObject = 1;
//  cast here

of

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

enz.

Als uw object iets anders is, moet u het eerst (indien mogelijk) converteren naar een INT eerst:

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

of

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

7

Ik gebruik een one-liner bij het verwerken van gegevens van GSON:

int i = object != null ? Double.valueOf(object.toString()).intValue() : 0;

8

int i = (Integer) object; //Type is Integer.
int i = Integer.parseInt((String)object); //Type is String.

9

kan niet worden gedaan. Een intis geen object, het is een primitief type. Je kunt het naar integer laten werpen en dan de int.

Integer i = (Integer) o; // throws ClassCastException if o.getClass() != Integer.class
 int num = i; //Java 1.5 or higher

Antwoord 10

Dat kan niet. Een intis geen Object.

Integeris echter een Object, maar ik betwijfel of je dat bedoelt.


Antwoord 11

Als je een string naar int wilt casten, gebruik dan Integer.valueOf("123").

Je kunt de meeste andere objecten echter niet casten naar int, omdat ze geen int-waarde hebben. bijv. een XmlDocument heeft geen int-waarde.


Antwoord 12

Ik denk dat je je afvraagt waarom je in C of C++ een objectaanwijzer als een getal kunt manipuleren, maar je kunt een objectreferentie in Java niet op dezelfde manier manipuleren.

Objectverwijzingen in Java zijn niet zoals aanwijzers in C of C++… Aanwijzers zijn in feite zijngehele getallen en je kunt ze manipuleren zoals elke andere int. Verwijzingen zijn opzettelijk een meer concrete abstractie en kunnen niet worden gemanipuleerd zoals verwijzingen dat kunnen.


Antwoord 13

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

Deze code laat zien waarom ArrayListbelangrijk is en waarom we deze gebruiken. Gewoon intcasten vanuit Object. Misschien is het nuttig.


Antwoord 14

Bijvoorbeeld Objectvariabele; hastaID

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

Bijvoorbeeld een object casten naar een int,hastaID

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

Antwoord 15

Zie deze 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);
  }
}

Antwoord 16

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

Antwoord 17

Eindelijk is de beste implementatie voor uw specificatie gevonden.

public int tellMyNumber(Object any) {
    return 42;
}

Antwoord 18

controleer eerst met instanceof keyword . indien waar, cast het dan.

Other episodes