Java函数返回int而不是Integer

时间:2019-01-31 00:47:49

标签: java integer int

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

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”获取返回值。这也很好。

既然有效,那么我是否会感到有些困惑,我可以保留原样吗?

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

是的,如评论中所述,从Integerint的转换将自动发生。这称为(自动)拆箱。

但是,如果要取消装箱的整数是null,则取消装箱将抛出NullPointerException。因此,请记住其他代码。