gpt4 book ai didi

Java 函数返回 int 而不是 Integer

转载 作者:行者123 更新时间:2023-12-02 10:19:18 26 4
gpt4 key购买 nike

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

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;
}

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

public class NumericResourceManager implements ResourceManagerInterface<int>

我最终做了:

public class NumericResourceManager implements ResourceManagerInterface<Integer> 

注意:使用“Integer”而不是“int”。

我有一段这样的代码:

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

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

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

  • 我使用如下界面:

    int someint = someManager.allocateResource();

  • 也就是说,我得到的返回值是“int”而不是“Integer”。这也运行良好。

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

    感谢您的宝贵时间。

    最佳答案

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

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

    关于Java 函数返回 int 而不是 Integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54451804/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com