java - 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”的自动转换?
我使用如下界面:
int someint = someManager.allocateResource();
也就是说,我在“int”而不是“Integer”中获得返回值。这也工作正常。
既然它有效,我有点困惑这是否安全,我可以保持原样吗?
谢谢你的时间。
解决方案
是的,正如评论中提到的那样,从Integer
to的转换将自动发生。int
这称为(自动)拆箱。
但是,如果要拆箱的 Integer 是null
,拆箱时会抛出NullPointerException
. 因此,请记住您的其他代码。
推荐阅读
- javascript - 如何在我的 Redux 应用程序中实现这些备注?
- javascript - 获取已更改的属性列表?
- java - 执行删除语句时休眠抛出ConstraintViolationException
- javascript - 使用 React Hooks 和 Redux 重新渲染的次数过多
- android - 在 kotlin 中从非 UI 线程编辑 livedata
- c++ - 具有从“NameBase”类到模板“Name”类的相互继承的 C++ 习语(或模式)
- function - 我正在使用 fullpage.js 并想隐藏小屏幕的导航选项(最大宽度:700px)
- c# - 如何在 C# 中的字符串中找到某个字母?
- ruby-on-rails - Rails ActiveStorage:如何避免为每张图片重定向一次?
- python - Matlab 到 Python 的正确翻译(CID 距离)