java 认证 种类_java – 用基本类型验证多个instanceof的最佳方法是什么(例如:switch case)?...
我在这里搜索了答案,我发现的每一个帖子实际上都是我所寻求的“片段”.我想找到比这更好的方法:〜编辑:哎呀!我的意思是首先使用原始的Wrapper类,但是当我在那个时候调用方法时我正在考虑使用原始类型〜谢谢你注意到它:)@Overridepublic void setValue(Object value) {if (value instanceof String) {} else if (value
我在这里搜索了答案,我发现的每一个帖子实际上都是我所寻求的“片段”.
我想找到比这更好的方法:
〜编辑:哎呀!我的意思是首先使用原始的Wrapper类,但是当我在那个时候调用方法时我正在考虑使用原始类型〜
谢谢你注意到它:)
@Override
public void setValue(Object value) {
if (value instanceof String) {
} else if (value instanceof Integer) { // and not 'int'
} else if (value instanceof Long) { // and not 'long'
}
}
// The usage that made me confused in the first place :
int i = 42;
setValue(i);
注意@Override注释:这是接口方法的实现.此方法将根据实现接受不同的类型,因此我不想使用不同的参数类型创建三个不同的方法.
在这个例子中,这是一个只接受数字而不接受任何其他内容的文本框,因此它只能由一个String(由正则表达式^ [0-9] * $验证),long和int表示.
我也喜欢它 – 也许,最终 – 接受更像POJO的自定义(和简单)DTO,但如果这种特殊性使其他一切变得复杂,我会考虑其他因素,所以不要太担心这个一.
正如我所说,这个接口的不同实现可以接受完全不同的类型.
*我显然没有想要一种方法来切换整数,长整数和字符串(它不能被切换,但直到Java7),我想切换instanceofs *
看了之后
我的实现显然有效,但我觉得有更好的方法.
我想知道是否有比我做的更清洁的方法,你有什么建议和原因?
感谢您的时间.
真诚的,Dominic Brissette.
编辑:使用原始类型和Autoboxing
public static void main(String[] args) {
int i = 42;
System.out.println(autoboxing(i));
}
public static boolean autoboxing(Object o) {
return o instanceof Integer;
}
输出为true,因为最后,myInt instanceof Integer有点真……
更多推荐
所有评论(0)