首页 > 解决方案 > Java 函数返回 int 而不是 Integer

问题描述

伙计们,我正在编写一个可以管理不同类型资源的资源管理器。资源可以是整数或一些自定义类型。所以,我定义了一个这样的接口:

public interface ResourceManagerInterface<R> {
    /**
     * allocateResource:
     * Allocate a resource from the resource pool
     * @return
     */
    R allocateResource() throws ResourceUnavailableException;

    /**
     * freeResource:
     * Deallocate/Return/Free a resource and make it available in the pool.
     * @param resource
     */
    void freeResource(R resource) throws InvalidResourceException;
}

该接口的实现者之一管理“int”类型的资源。因为我做不到:

public class NumericResourceManager implements ResourceManagerInterface<int>

我最终做了:

public class NumericResourceManager implements ResourceManagerInterface<Integer> 

注意:使用“整数”而不是“整数”。

我有一段这样的代码:

@Override
    public Integer allocateResource() throws ResourceUnavailableException {
        try {
            return internalToExternal(firstAvailableResource());
        } catch (ResourceUnavailableException e) {
            throw e;
        }
    }

函数 internalToExternal() 返回一个“int”而不是“Integer”。

问题: 1. 是否有从“int”到“Integer”的自动转换?

  1. 我使用如下界面:

    int someint = someManager.allocateResource();

也就是说,我在“int”而不是“Integer”中获得返回值。这也工作正常。

既然它有效,我有点困惑这是否安全,我可以保持原样吗?

谢谢你的时间。

标签: javaintegerint

解决方案


是的,正如评论中提到的那样,从Integerto的转换将自动发生。int这称为(自动)拆箱。

但是,如果要拆箱的 Integer 是null,拆箱时会抛出NullPointerException. 因此,请记住您的其他代码。


推荐阅读