当前位置: 首页 > 知识库问答 >
问题:

Java函数返回int而不是Integer [duplicate]

劳高爽
2023-03-14

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

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”的自动转换?

我使用如下界面:

someManager.allocate资源。

也就是说,我以“int”而不是“整数”的形式获取返回值。这也工作正常。

既然它能工作,我有点困惑这是否安全,我能让它保持原样吗?

谢谢你的时间。

共有1个答案

佴保臣
2023-03-14

是的,从Integerint的转换将自动进行,如注释中所述。这称为(自动)拆箱。

但是,如果要解装箱的整数是null,则解装箱将抛出NullPointerExc的。因此,对于您的其他代码,请记住这一点。

 类似资料:
  • 我有一个递归函数,它会重复这个函数,直到不满足if条件,然后输出一个整数。但是,此函数之外需要整数的函数正在接收一个单位。我应该如何修改代码以返回int? 这就是整个程序 }

  • 我试图了解异步/等待如何与promise一起工作。 据我所知,await应该是阻塞的,在上面的代码中,它似乎阻塞了返回带有原语

  • 从数据库中提取博客。 为什么这里的blogContent在函数的上下文中是全局的,而我们正在内部更改它,所以它应该返回值,有人能解释为什么会这样吗? 有没有不使用promise/async/await的方法>>>有人给了我答案 我如何从异步调用返回响应? 但这一点我不知道,最主要的是我不知道Ajax。

  • 问题内容: 我有一个发出AJAX调用的功能(通过jQuery)。在本节中,我有一个函数说: 但是,如果我这样称呼它: 第一个永远不会被调用。 如果将an 放入函数中,则为true,但在该函数返回之前不会为true 。 可以将回调函数传递给我的方法吗?喜欢: 问题答案: 是一个 回调 函数。它将由Ajax对象调用-异步!-操作完成时。您无法捕捉回调的结果,只有Ajax对象可以做到这一点。 您的函数-

  • 我试图理解map和flatMap是如何工作的,但是在下面的代码中被卡住了。flatMap()函数返回一个RDD[Char],但我希望返回的是RDD[String]。有人能解释为什么它会产生RDD[Char]吗?

  • 问题内容: 为什么不: 代替: 获得唯一哈希码的更高机会? 问题答案: 因为数组的最大长度为。 由于的主要用途是确定将对象插入/ 的后备数组中的哪个插槽,因此hashcode> 将无法存储在该数组中。