作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建方法deNull()来检查输入值。这些输入值可能是 String、int、double、Timestamp。因此,我使用泛型类型创建方法。
如果输入值为null,则返回“”;
如果输入值不为空,则返回原始值。
我的代码如下:
public static <T> T deNull(T value){
if(value == null ){
return "";
} else {
return value;
}
}
但是,此方法在第 3 行出现异常,并显示类型不匹配:无法从 String 转换为 T。
我应该如何修改这个方法以使其按预期运行?
最佳答案
int
和 double
无论如何都不能为 null
,剩下 Timestamp
和 String
作为唯一的两个选项。
在我看来,只编写两个没有泛型的方法,不值得这么麻烦。
如果您确实需要两种以上类型,我建议将方法更改为。
public static <T> T deNull(T value, T orElse){
if(value == null ){
return orElse;
} else {
return value;
}
}
String x = deNull( string, "");
Integer y = deNull( integer, 0);
(我还建议将方法名称更改为 valueOrElse
)
关于java - 如何从具有泛型类型的方法中输入和返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47047821/
我是一名优秀的程序员,十分优秀!