Как привести Объект к int

Как я могу передать объект в int в java?

Ответ 1

Если вы уверены, что этот объект является Integer:

int i = (Integer) object;

Или, начиная с Java 7, вы можете эквивалентно написать:

int i = (int) object;

Опасайтесь, он может выбросить ClassCastException, если ваш объект не является Integer и NullPointerException, если ваш объект null.

Таким образом вы предполагаете, что ваш Object является Integer (завернутый int), и вы удаляете его в int.

int является примитивным, поэтому он не может быть сохранен как Object, единственный способ состоит в том, чтобы int рассматривался/помещался в коробку как Integer, а затем сохранялся как Object.


Если ваш объект является String, вы можете использовать метод Integer.valueOf(), чтобы преобразовать его в простой int:

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

Он может выбросить NumberFormatException, если ваш объект на самом деле не является String с целым числом в качестве содержимого.


Ресурсы:

В той же теме:

Ответ 2

Предполагая, что объект является объектом Integer, вы можете сделать это:

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

Если объект не является объектом Integer, вам необходимо определить тип и преобразовать его в зависимости от его типа.

Ответ 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");
    }
}

Как вы можете видеть, это не очень эффективный способ сделать это. Вы просто должны быть уверены в том, какой у вас объект. Затем преобразуйте его в int правильно.

Ответ 4

Сценарий 1: простой случай

Если это гарантирует, что ваш объект является целым Integer, это простой способ:

int x = (Integer)yourObject;

Сценарий 2: любой числовой объект

В Java Integer, Long, BigInteger и т.д. Все реализуют интерфейс Number который имеет метод с именем intValue. Любые другие пользовательские типы с числовым аспектом также должны реализовывать Number (например, Age implements Number). Так что вы можете:

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

Сценарий 3: разобрать числовой текст

Когда вы принимаете пользовательский ввод из командной строки (или текстового поля и т.д.), Вы получаете его в виде String. В этом случае вы можете использовать Integer.parseInt(String string):

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

Если вы получаете ввод как Object, вы можете использовать (String)input или, если он может иметь другой текстовый тип, input.toString():

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

Сценарий 4: хэш идентичности

В Java нет указателей. Однако Object имеет реализацию по умолчанию в виде указателя для hashCode(), которая доступна напрямую через System.identityHashCode(Object o). Так что вы можете:

int x = System.identityHashCode(yourObject);

Обратите внимание, что это не реальное значение указателя. Адрес памяти объектов может быть изменен JVM, в то время как их хеши идентичности сохраняются. Кроме того, два живых объекта могут иметь одинаковый хеш-идентификатор.

Вы также можете использовать object.hashCode(), но он может быть специфичным для типа.

Сценарий 5: уникальный индекс

В тех же случаях вам нужен уникальный индекс для каждого объекта, например, для автоматического увеличения значений идентификаторов в таблице базы данных (и в отличие от идентификатора, который не является уникальным). Простой пример реализации для этого:

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

}

Использование:

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

Сценарий 6: член enum

В Java члены перечисления - не целые числа, а полнофункциональные объекты (в отличие, например, от C/C++). Вероятно, никогда не требуется преобразовывать объект enum в int, однако Java автоматически назначает индексный номер каждому члену enum. К этому индексу можно получить доступ через Enum.ordinal(), например:

enum Foo { BAR, BAZ, QUX }

// ...

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

enter image description here

Ответ 5

Вы должны передать его в Integer (класс обертки int). Затем вы можете использовать метод Integer intValue() для получения внутреннего int.

Ответ 6

Ответ:

int i = ( Integer ) yourObject;

Если ваш объект уже является целым числом, он будет работать плавно. то есть:

Object yourObject = 1;
//  cast here

или

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

и др.

Если ваш объект - что-то еще, вам нужно будет преобразовать его (если возможно) в int сначала:

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

или

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

Ответ 7

Я использую однострочный вкладыш при обработке данных из GSON:

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

Ответ 8

Вы не можете. int не является Object.

Integer является Object, хотя, но я сомневаюсь, что вы имеете в виду.

Ответ 9

Невозможно выполнить. int не является объектом, это примитивный тип. Вы можете передать его в Integer, затем получить int.

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

 int num = i; //Java 1.5 or higher

Ответ 10

Если Object изначально был создан как Integer, вы можете отключить его до int с помощью оператора трансляции (Subtype).

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

Обратите внимание, что это работает только тогда, когда вы используете хотя бы Java 1.5 с функцией autoboxing, в противном случае вам нужно объявить i как Integer, а затем вызовите intValue() на нем.

Но если он изначально не был создан как Integer вообще, тогда вы не можете так упустить. Это приведет к ClassCastException с исходным именем класса в сообщении. Если объект toString(), как получено String#valueOf() обозначает синтаксически допустимое целочисленное число (например, только цифры, если необходимо с знаком минуса спереди), то вы можете использовать Integer#valueOf() или new Integer() для этого.

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

См. также:

Ответ 11

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

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

Ответ 12

Если вы имеете в виду приведение строки к int, используйте Integer.valueOf("123").

Вы не можете использовать большинство других объектов для int, потому что они не имеют значения int. Например. XmlDocument не имеет значения int.

Ответ 13

Я думаю, вам интересно, почему C или С++ позволяет вам манипулировать указателем на объект как число, но вы не можете манипулировать ссылкой на объект в Java тем же способом.

Ссылки на объекты в Java не похожи на указатели на C или С++... Указатели в основном представляют собой целые числа, и вы можете манипулировать ими, как и любой другой int. Ссылки преднамеренно представляют собой более конкретную абстракцию и не могут манипулировать тем, как могут быть указатели.

Ответ 14

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

Этот код показывает, почему ArrayList важен и почему мы его используем. Простое литье int из Object. Может быть полезным.

Ответ 15

Переменная объекта примера; hastaId

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

Например приведение объекта к int, hastaID

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

Ответ 16

Обратитесь к этому коду:

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

Ответ 17

so divide1=me.getValue()/2;

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

Ответ 18

сначала проверьте с ключевым словом instanceof. если true, то произведите его.