伙计们,我正在写一个资源管理器,它可以管理不同类型的资源。资源可以是整数或某些自定义类型。因此,我定义了这样的接口:
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”获取返回值。这也很好。
既然有效,那么我是否会感到有些困惑,我可以保留原样吗?
感谢您的时间。
答案 0 :(得分:1)
是的,如评论中所述,从Integer
到int
的转换将自动发生。这称为(自动)拆箱。
但是,如果要取消装箱的整数是null
,则取消装箱将抛出NullPointerException
。因此,请记住其他代码。