Как я могу передать объект в int в java?
Как привести Объект к int
Ответ 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
Ответ 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, то произведите его.