una texto pasar entero convertir como cambiar cadena java object casting integer

java - texto - Cómo lanzar un objeto a un int



int jcombobox java (17)

Escenario 1: caso simple

Si se garantiza que su objeto es un Integer , esta es la manera más simple:

int x = (Integer)yourObject;

Escenario 2: cualquier objeto numérico

En Java Integer , Long , BigInteger etc. todos implementan la interfaz Number que tiene un método llamado intValue . Cualquier otro tipo personalizado con un aspecto numérico también debe implementar Number (por ejemplo: Age implements Number ). Así que puedes:

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

Escenario 3: analizar texto numérico

Cuando acepta la entrada del usuario desde la línea de comando (o campo de texto, etc.) lo obtiene como una String . En este caso, puede usar Integer.parseInt(String string) :

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

Si obtiene entrada como Object , puede usar (String)input o, si puede tener otro tipo de texto, input.toString() :

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

Escenario 4: hash de identidad

En Java no hay punteros. Sin embargo, Object tiene una implementación predeterminada similar a un puntero para hashCode() , que está directamente disponible a través de System.identityHashCode(Object o) . Así que puedes:

int x = System.identityHashCode(yourObject);

Tenga en cuenta que este no es un valor de puntero real. La JVM puede cambiar la dirección de memoria de los objetos mientras sus hash de identidad se mantienen. Además, dos objetos vivientes pueden tener el mismo hash de identidad.

También puede usar object.hashCode() , pero puede ser específico de tipo.

Escenario 5: índice único

En los mismos casos, necesita un índice único para cada objeto, como valores de ID autoincrementados en una tabla de base de datos (y a diferencia del hash de identidad, que no es único). Una implementación de muestra simple para esto:

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; } } }

Uso:

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

¿Cómo puedo lanzar un objeto a un int en java?


Consulte este código:

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


No puedes. Un int no es un Object .

Integer es un Object , pero dudo que sea eso lo que quieres decir.


No se puede hacer Un int no es un objeto, es un tipo primitivo. Puedes convertirlo a Integer, luego obtener el int.

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


Por ejemplo, variable de objeto; hastaId

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

Por ejemplo, hastaID un objeto a un int, hastaID

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


Responder:

int i = ( Integer ) yourObject;

Si su objeto ya es un número entero, funcionará sin problemas. es decir:

Object yourObject = 1; // cast here

o

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

etc.

Si su objeto es cualquier otra cosa, primero deberá convertirlo (si es posible) en una int:

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

O

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


Si el Object se ha instanciado originalmente como un Integer , entonces puede bajarlo a un int usando el operador de reparto (Subtype) .

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

Tenga en cuenta que esto solo funciona cuando usa al menos Java 1.5 con la función de autoboxing , de lo contrario debe declarar i como Integer lugar y luego llamar a intValue() en él .

Pero si inicialmente no se creó como un Integer , entonces no se puede abatir de esa manera. Esto daría como resultado una ClassCastException con el nombre de clase original en el mensaje. Si la representación toString() del objeto obtenida por String#valueOf() denota un número entero sintácticamente válido (por ejemplo, solo dígitos, si es necesario con un signo menos al frente), entonces puede usar Integer#valueOf() o new Integer() para esto.

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

Ver también:


Si estás seguro de que este objeto es un Integer :

int i = (Integer) object;

O, a partir de Java 7, puede escribir de manera equivalente:

int i = (int) object;

Tenga cuidado, puede lanzar una ClassCastException si su objeto no es un Integer y una NullPointerException si su objeto es null .

De esta forma, asumes que tu Objeto es un Entero (el envolvente int) y lo destrabaste en un int.

int es una primitiva, por lo que no se puede almacenar como un Object , la única forma es tener un int / boxed como un Integer luego almacenarlo como un Object .

Si su objeto es un String , puede usar el método Integer.valueOf() para convertirlo en un simple int:

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

Puede arrojar una NumberFormatException si su objeto no es realmente una String con un entero como contenido.

Recursos:

Sobre el mismo tema:


Si quiere decir lanzar un String a int, use Integer.valueOf("123") .

Sin embargo, no puedes convertir la mayoría de los otros objetos a int, porque no tienen un valor int. Por ejemplo, un XmlDocument no tiene ningún valor int.


Supongo que te preguntas por qué C o C ++ te permiten manipular un puntero de objeto como un número, pero no puedes manipular una referencia de objeto en Java de la misma manera.

Las referencias a objetos en Java no son como punteros en C o C ++ ... Los punteros son básicamente enteros y puedes manipularlos como cualquier otro int. Las referencias son intencionalmente una abstracción más concreta y no pueden ser manipuladas como lo hacen los indicadores.


Suponiendo que el objeto es un objeto Integer , puede hacer esto:

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

Si el objeto no es un objeto Integer , entonces debe detectar el tipo y convertirlo en función de su tipo.


Tienes que convertirlo en un Entero (clase contenedora de int). Luego puede usar el método intValue () de Integer para obtener el int interno.


Uso un trazador de líneas cuando proceso datos de GSON:

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


primer control con la palabra clave instanceof. si es cierto, entonces cállalo.


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

Como puede ver, esta no es una forma muy eficiente de hacerlo. Simplemente tiene que estar seguro de qué tipo de objeto tiene. Luego, conviértalo en int del modo correcto.


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


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

Este código muestra por qué ArrayList es importante y por qué lo usamos. Simplemente lanzando int desde Object . Puede ser útil