What is the 'instanceof' operator used for?

我了解到Java有instanceof操作符.你能详细说明一下它的用途和优点吗?

推荐答案

基本上,判断对象是否是特定类的实例.

例子:

public void doSomething(Number param) {
  if( param instanceof Double) {
    System.out.println("param is a Double");
  }
  else if( param instanceof Integer) {
    System.out.println("param is an Integer");
  }

  if( param instanceof Comparable) {
    //subclasses of Number like Double etc. implement Comparable
    //other subclasses might not -> you could pass Number instances that don't implement that interface
    System.out.println("param is comparable"); 
  }
}

请注意,如果您必须经常使用该运算符,这通常意味着您的设计存在一些缺陷.因此,在一个设计良好的应用程序中,您应该尽可能少地使用该运算符(当然,一般规则也有例外).

Java相关问答推荐

在URL类图中表示Java swing类

Saxon 9:如何从Java扩展函数中的net.sf.saxon.expr. XPathContent中获取声明的变量

如何为具有多对多关系的实体的给定SQL查询构建JPA规范?

Cosmos Change Feed Process Lag远远超过收集中的记录数量

如何在Docker容器中使用wireock—Webhooks阻止请求?

空手道比赛条件

SQlite for Android无法使用json_group_array/json_object

Select 按位运算序列

JavaFX Maven Assembly插件一直打包到错误的JDK版本

当返回Mono<;Something>;时,不会调用Mono<;void>;.flatMap

如何对多个字段进行分组和排序?

有没有更快的方法在N个容器中删除重复项?

无法在Java中处理PayPal支付响应

使用PDFBox从PDF中删除图像

使用Jackson库反序列化json

使用MediaPlayer类在一段时间后停止播放音乐

如何在Maven Central上部署?

如何在Java中的重写方法参数中强制(Enum)接口实现?

OAuth:登录后无法查看Google邮箱地址

rest api服务 spring 启动中出现IllegalFormatConversionException