我如何在java中将对象转换为int型?
当前回答
不可能做到。int不是一个对象,它是一个基本类型。你可以将它转换为Integer,然后获取int。
Integer i = (Integer) o; // throws ClassCastException if o.getClass() != Integer.class
int num = i; //Java 1.5 or higher
其他回答
如果你确定这个对象是一个Integer:
int i = (Integer) object;
或者,从Java 7开始,你可以等价地写:
int i = (int) object;
注意,如果你的对象不是Integer,它会抛出ClassCastException,如果你的对象是null,它会抛出NullPointerException。
通过这种方式,您假设您的对象是一个整数(包装的整型),并将其拆箱为整型。
int是一个原语,所以它不能存储为对象,唯一的方法是将int考虑/装箱为整数,然后存储为对象。
如果你的对象是一个String,那么你可以使用Integer.valueOf()方法将它转换成一个简单的int:
int i = Integer.valueOf((String) object);
如果对象不是一个包含整数的String对象,它可以抛出NumberFormatException异常。
资源:
自动装箱 原始数据类型
关于同一话题:
Java:自动装箱和强制转换有什么区别? 自动装箱:我可以这样写:Integer I = 0;而不是:Integer i = new Integer(0); 将Object转换为原始int
如果你的意思是将String转换为int,请使用Integer.valueOf("123")。
你不能将大多数其他对象强制转换为int型,因为它们没有int值。例如,XmlDocument没有int值。
首先使用instanceof关键字进行检查。如果为真,则转换它。
so divide1=me.getValue()/2;
int divide1 = (Integer) me.getValue()/2;
场景一:简单案例
如果它保证你的对象是一个Integer,这是一个简单的方法:
int x = (Integer)yourObject;
场景2:任何数字对象
在Java中,Integer, Long, BigInteger等都实现了Number接口,它有一个名为intValue的方法。任何其他具有数字方面的自定义类型也应该实现Number(例如:Age实现Number)。所以你可以:
int x = ((Number)yourObject).intValue();
场景3:解析数值文本
当你接受用户输入从命令行(或文本字段等),你得到它作为一个字符串。在这种情况下,您可以使用Integer。方法用于字符串(String):
String input = someBuffer.readLine();
int x = Integer.parseInt(input);
如果你以Object形式获取输入,你可以使用(String)输入,或者,如果它可以有其他文本类型,则使用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:唯一索引
在同样的情况下,每个对象都需要一个唯一的索引,比如在数据库表中自动递增ID值(不像标识哈希是不唯一的)。一个简单的示例实现:
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;
}
}
}
用法:
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中,enum成员不是整数,而是全功能对象(例如,与C/ c++不同)。可能永远不需要将枚举对象转换为int,但是Java会自动将索引号与每个枚举成员关联起来。这个索引可以通过enumel .ordinal()访问,例如:
enum Foo { BAR, BAZ, QUX }
// ...
Object baz = Foo.BAZ;
int index = ((Enum)baz).ordinal(); // 1
推荐文章
- 在每个列表元素上调用int()函数?
- codestyle;把javadoc放在注释之前还是之后?
- 如何在Spring中定义List bean ?
- 将Set<T>转换为List<T>的最简洁的方法
- 在JavaScript中,什么相当于Java的Thread.sleep() ?
- 使用Java重命名文件
- URL从Java中的类路径加载资源
- .toArray(new MyClass[0]) or .toArray(new MyClass[myList.size()])?
- Hibernate中不同的保存方法之间有什么区别?
- Java 8流和数组操作
- Java Regex捕获组
- Openssl不被视为内部或外部命令
- 如何添加自定义方法到Spring Data JPA
- 如何在Ubuntu中设置Java环境路径
- 无法执行dex:在Eclipse中超过GC开销限制