我在这里搜索了答案,我发现的每一个帖子实际上都是我所寻求的“片段”.

我想找到比这更好的方法:

〜编辑:哎呀!我的意思是首先使用原始的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有点真……

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐