java – 泛型:确保参数类型相同
发布时间:2020-12-15 08:47:38 所属栏目:Java 来源:网络整理
导读:我有以下方法: protected S void setValue(final S oldValue,final S newValue) { // Do something} 我想确保两个参数都是相同的类型.如果在尝试传递两种不同类型的参数时出现编译器错误,那将会很酷. 上述方式显然不正确.我可以放入一个String和一个Integer
我有以下方法:
protected <S> void setValue(final S oldValue,final S newValue) { // Do something } 我想确保两个参数都是相同的类型.如果在尝试传递两种不同类型的参数时出现编译器错误,那将会很酷. 上述方式显然不正确.我可以放入一个String和一个Integer,因为它们都是从Object扩展而来的. 我的想要甚至可能吗?或者是唯一的方法来确保两个参数都是相同的类型,以检查方法内部并抛出IllegalArgumentException? 解决方法
如果您认为S是正确的类型,则可以这样做:
protected <S,T extends S> void setValue(final S oldValue,final T newValue) { // Do something } 你可以而且不能输入这些: // Works setValue("something","something"); setValue(new Object(),new String()); // Doesn't work setValue(new String(),new Object()); 要么 你可以做 : protected <S> void setValue(final S oldValue,final S newValue,final Class<S> clazz) { // Do something } 并使用它 setValue("something","something",String.class); 要么 protected <S> void setValue(final S oldValue,final S newValue) { if(!oldValue.getClass().equals(newValue.getClass())) { //throw something } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 详解JAVA后端实现统一扫码支付:微信篇
- Java ServiceLoader在开发期间如何工作? (构建JAR之前的单
- java – 在Gradle缓存中没有创建Gradle依赖项?
- 浅谈java面向对象的数组化信息处理
- java – 什么时候应该使用Apache Commons的Validate.isTrue
- java – Jackson – 将boolean序列化为1/0而不是true / fal
- java 考试易考识记题目(一)
- java – 简化条件运算符
- java – 无效的列类型?将ArrayList发送到pl / sql createdN
- windowns2k下快速配置jsp服务器+resin篇