加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 用基本类型验证多个instanceof的最佳方法是什么(例如:s

发布时间:2020-12-15 08:41:45 所属栏目:Java 来源:网络整理
导读:我在这里搜索了答案,我发现的每一个帖子实际上都是我所寻求的“片段”. 我想找到比这更好的方法: ?编辑:哎呀!我的意思是首先使用原始的Wrapper类,但是当我在那个时候调用方法时我正在考虑使用原始类型? 谢谢你注意到它:) @Overridepublic void setValue(O
我在这里搜索了答案,我发现的每一个帖子实际上都是我所寻求的“片段”.

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

?编辑:哎呀!我的意思是首先使用原始的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 *

看了之后

> java: boolean instanceOf Boolean?
> switch instanceof?
> Autoboxing:http://leepoint.net/notes-java/data/basic_types/autoboxing.html

我的实现显然有效,但我觉得有更好的方法.
我想知道是否有比我做的更清洁的方法,你有什么建议和原因?

感谢您的时间.
真诚的,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有点真……

解决方法

您可以做的一件事是将基元包装在一个接口中,这样实现此接口的任何值类型都可以作为值传递.

public interface ValueInterface {
    processValue();
}

那么set value方法看起来像:

public void setValue(ValueInterface value) {
   value.processValue();
}

现在,您将工作委托给知道如何对自己采取行动的实际对象.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读