我如何在java中将对象转换为int型?
当前回答
so divide1=me.getValue()/2;
int divide1 = (Integer) me.getValue()/2;
其他回答
参考代码:
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);
}
}
如果对象最初被实例化为Integer,那么可以使用强制转换操作符(子类型)将其向下转换为int。
Object object = new Integer(10);
int i = (Integer) object;
注意,这只适用于至少使用带有自动装箱功能的Java 1.5,否则必须将i声明为Integer,然后对其调用intValue()。
但如果它最初根本不是作为Integer创建的,那么你就不能像这样向下转换。它将导致消息中带有原始类名的ClassCastException。如果通过String#valueOf()获得的对象的toString()表示一个语法上有效的整数(例如,只有数字,如果需要前面有一个负号),那么你可以使用integer #valueOf()或new integer()。
Object object = "10";
int i = Integer.valueOf(String.valueOf(object));
参见:
继承和强制转换教程
首先使用instanceof关键字进行检查。如果为真,则转换它。
@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型。
我猜你想知道为什么C或c++允许像操作数字一样操作对象指针,但在Java中不能以同样的方式操作对象引用。
Java中的对象引用不像C或c++中的指针……指针基本上是整数,你可以像操作其他int一样操作它们。引用是一种更具体的抽象,不能像指针那样被操作。
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- 在Jar文件中运行类
- 带参数的可运行?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 向对象数组添加属性
- 在Java流是peek真的只是调试?
- Recyclerview不调用onCreateViewHolder