如何将 Object 转换为 int

新手上路,请多包涵

如何在 java 中将对象转换为 int?

原文由 Sheehan Alam 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

如果您确定此对象是 Integer

 int i = (Integer) object;

或者,从 Java 7 开始,您可以等效地编写:

 int i = (int) object;

Beware, it can throw a ClassCastException if your object isn’t an Integer and a NullPointerException if your object is null .

这样你就假设你的对象是一个整数(包装的 int)并且你将它拆箱成一个 int。

int is a primitive so it can’t be stored as an Object , the only way is to have an int considered/boxed as an Integer 然后存储为 Object


如果您的对象是 String ,那么您可以使用 Integer.valueOf() 方法将其转换为简单的 int :

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

它可以抛出一个 NumberFormatException 如果你的对象不是真正的 String 一个整数作为内容。


资源 :

关于同一主题:

原文由 Colin Hebert 发布,翻译遵循 CC BY-SA 3.0 许可协议

场景一:简单案例

如果保证您的对象是 Integer ,这是简单的方法:

 int x = (Integer)yourObject;


场景 2:任何数字对象

In Java Integer , Long , BigInteger etc. all implement the Number interface which has a method named 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:唯一索引

在相同的情况下,您需要为每个对象创建一个唯一索引,例如在数据库表中自动递增 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:枚举成员

在 Java 中,枚举成员不是整数,而是功能齐全的对象(例如,与 C/C++ 不同)。可能永远不需要将枚举对象转换为 int ,但是 Java 会自动将索引号关联到每个枚举成员。该索引可以通过 Enum.ordinal() 访问,例如:

 enum Foo { BAR, BAZ, QUX }

// ...

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


在此处输入图像描述

原文由 Dávid Horváth 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题