java如何判断一个类是否实现了某个接口?对象是否为一个类的实例?

java如何判断一个类是否实现了某个接口

Class中有个方法 public native boolean isAssignableFrom(Class<?> cls)用来判断子类是否继承于父类的或者父接口的。

    public native boolean isAssignableFrom(Class<?> cls);
java如何判断对象是否是否为一个类的实例?

java有个操作符叫instanceof
可以判 boolean a=student instanceof Person 这里 student应该是对象实例

isAssignableFrom()方法与instanceof关键字的区别总结为以下两个点:
  1. isAssignableFrom()方法是从类继承或实现的角度去判断,instanceof关键字是从实例(对象)继承或实现的角度去判断。
  2. isAssignableFrom()方法是判断是否是某个类的父类,instanceof关键字是判断是否某个类的子类。
使用方法:
父类.class.isAssignableFrom(子类.class)

子类实例 instanceof 父类类型
  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WeCube是一套开源的,一站式IT架构管理和运维管理工具,主要用于简化分布式架构IT管理,并可以通过插件进行功能扩展。 WeCube设计理念: WeCube的设计理念与IT系统生命周期管理基本一致。可以通过“六个维度和一个核心”来阐述。 一个核心:通过注册新插件持续扩展WeCube的功能,通过如下5个能力实现插件注册及协作。插件注册详见“插件注册”。 菜单布局:WeCube提供前端UI基座和前端开发规范,使各个插件的前端交互能够无缝集成到WeCube,进而形成一个统一平台。 权限模型:WeCube的权限模型提供“用户-角色-菜单”三级权限模型,并提供统一认证方案。数据权限及API权限,由插件自身控制。 流程编排:WeCube内置一套标准的BPMN流程引擎,可以通过客户自定义编排驱动插件协同工作,减少人工干预。编排设计详见“编排设计”。 数据模型:插件需要将自身需要提供给其他插件使用的数据模型注册到WeCube的统一数据模型,然后通过标准的CRUD接口提供数据访问服务。 系统参数:WeCube的全局参数、插件需要客户修改、插件需要暴露给其他插件使用的参数,需要注册到WeCube的系统参数内。 六个维度:通过定义六个维度的菜单,并将插件功能有组织性的插入这六个维度菜单中,形成对IT系统全生命周期的有效管理。 任务:汇聚多种型任务,形成一体化的工作平台。工作内容清晰可见,轻重缓急一目了然。 设计:定义模型和规范,形成标准化设计语言。通过规范化设计及图形化展示,清晰、准确地描绘出对分布式架构的期望。 执行:通过各自动化、标准化任务的执行,将分布式架构的期望设计变成现实存在,消除人员能力参差不齐导致的实现差异。 监测:定义全方位的监测项指标,通过持续收集监测数据,精确反映现状,并发现现实与期望的差异项。 智慧:应用机器学习等技术,赋予智慧能力。通过数学建模,制定应对监测发现的差异项的处理策略。 调整:通过执行处理策略来不断进行动态调整,最终保持现实与期望的对等,进而使系统稳定运行。 WeCube主要功能简介: WeCube的功能菜单设计与设计理念保持一致。分别是任务、设计、执行、监测、智慧、调整、协同、系统。 系统 1、系统参数:管理WeCube Platform运行所需的系统参数。 2、资源管理:管理WeCube提供的资源如容器母机及资源上运行的实例。 3、权限管理:管理WeCube Platform的用户,角色和菜单,可以对权限进行菜单级别的管控。 协同 1、插件注册:选择插件包上传,插件包需声明本插件的依赖、所需菜单、数据模型、系统参数、权限设定及运行资源,注册后通过容器运行,支持多实例,可以查看插件运行的日志。选择插件服务,通过插件运行的参数关联CMDB数据模型的属性值,形成注册。 2、任务编排:比如设计一个VPC创建的编排。包括创建VPC、创建子网、创建VM。流程的每个执行节点需要关联插件。 设计(WeCMDB插件提供) 1、规划设计:用于设计机房结构。 2、资源规划:用于实例一个机房,特别是两地三中心结构。 3、应用架构设计:用于设计一个应用的逻辑架构。 4、应用部署设计:用于实际部署一个应用。支持灰度发布。 5、CI数据管理/查询:通过模型图形进入单个数据管理以及查询。 6、CI综合查询管理/数据综合查询:用于配制多CI属性报表。比如一个应用使用到了哪些主机。 7、枚举数据管理/查询:通过对公共枚举和私有枚举进行管理以及查询。 执行 1、编排任务执行:在选择编排后可对选择目标对象执行编排,支持灰度操作。比如重启某个资源集的5台主机。 2、物料管理(Artifacts插件提供):管理应用程序的包。可以定义各种文件,可以配置环境差异导致的变量替换规则,不需要人工处理。 3、批量执行:通过配置综合查询并选择目标。在通过特定插件来执行任务。比如某个应用的所有主机,执行一个用户权限变更。 任务(Service-Management插件提供) 1、模板管理:服务目录管理, 服务请求模板管理; 2、服务管理:服务请求管理,任务管理; 监测(Open-Monitor插件提供) 1、Agent管理: 注册、启动、停止; 2、数据管理: 提供数据采集配置, 数据查询等功能; 3、告警管理: 提供阈值配置、日志监控、告警触发等功能; 4、视图管理: 提供图形配置和自定义视图功能; 调整(规划中) 智慧(规划中)
第四章 面向对象的概念和 Java 实现-2 回顾 是具有相同属性和行为的一组对象的 集合 , 对象实例 封装是隐藏对象实现细节的过程,以便不让用户看到实现的细节 可用Class 来定义,的变量和方法可被该实例访问, 圆点符号用于访问对象的成员,构造函数在创建对象时初始化对象 包可用package 来申明 ,可用import 来导入包 目标 理解继承及其特点 运用JAVA程序实现继承 理解多态及其特点设计 运用JAVA程序实现多态 掌握访问修饰符和方法修饰符 继承 继承的特点 继承的优点 继承的JAVA实现构造方法 2-1 子构造方法 2-2 调用父构造方法的语法为: super() 或 super(参数列表) ; super () 方法始终指向调用的父 调用父构造方法 演示:示例 3 多态性 2-1 多态性是指¡°多种形式¡± 它使用不同的实例而执行不同操作 多态包括方法重写和方法重载 多态性 2-2 方法重载 2-1 方法重载 2-2 演示:示例 4 方法重写 2-1 方法重写 2-2 访问修饰符 3-1 信息隐藏是 OOP 最重要的功能之一,也是使用访问修饰符的原因 信息隐藏的原因包括: 对任何实现细节所作的更改不会影响使用该的代码 防止用户意外删除数据 此易于使用 访问修饰符 3-2 访问修饰符 3-3 访问修饰符可访问性 方法修饰符 static 修饰符 3-1 static修饰符修饰的方法叫静态方法 目的 使该方法独立于实例,使用去访问,而不是实例,所以也叫方法 static 修饰符 3-2 调用静态方法的语法为: classname.methodname( ); static 修饰符 3-3 演示:示例 6 final 修饰符 abstract 修饰符 3-1 由abstract修饰的方法叫抽象方法;由abstract修饰的叫抽象 抽象方法必须声明在抽象中 抽象方法语法: abstract type method_name(parameter_list); 声明抽象语法: abstract class{…… } 使用:父中的某些抽象不包含任何逻辑,并需要在子中重写,子提供这种抽象方 法的实现细节 abstract 修饰符 3-2 抽象可以具有指向子对象对象引用 abstract 修饰符 3-3 演示:示例 7 接口 接口就是某个事物对外提供的一些功能的申明 可以利用接口实现多态,同时接口也弥补了Java单一继承的弱点 使用interface关键字定义接口 一般使用接口声明方法或常量,接口中的方法只能是声明,不能是具体的实现 创建接口的步骤 2-1 // 定义方法的接口 public interface myinterface { public void add(int x, int y); public void volume(int x,int y, int z); } // 定义程序使用的常量的接口 public interface myconstants { public static final double price = 1450.00; public static final int counter = 5; } 创建接口的步骤 2-2 接口使用示例 总结 封装、继承和多态是面向对象的主要特征 继承可提高代码的重用性,使用extends关键字来实现。除了构造方法之外,父的所有 方法和属性都被子对象继承 多态性是不同的实例对象以不同的方式对相同的信息作出不同的表现 访问修饰符用于确定访问成员的方式 Java 常用修饰符有 static、final、abstract 接口Java编程一项重要的技术,同过它可以实现多态,同时它也弥补了Java单一继承 的不足 . . ----------------------- 《java面向对象程序设计-继承和多态》教案全文共5页,当前为第1页。 《java面向对象程序设计-继承和多态》教案全文共5页,当前为第2页。 《java面向对象程序设计-继承和多态》教案全文共5页,当前为第3页。 《java面向对象程序设计-继承和多态》教案全文共5页,当前为第4页。 《java面向对象程序设计-继承和多态》教案全文共5页,当前为第5页。
此工具我不再更新,里面大多数方法我迁移到了hutool工具包中,而其中一些不常用的功能被遗弃,项目暂留做为以后参考。 common-tools 一、数据库工具 1、com.baijob.commonTools.db.ds C3p0Ds 和 DruidDs分别是两种连接池的实现,依赖于数据库配置文件,配置文件的样例参考config/db-example.setting 使用时将db-example.setting复制于${classpath}/config/db.setting,按照配置文件中的说明替换相应值 如果使用Druid,则需参考druid-example.setting创建${classpath}/config/druid.setting文件,详情请参考官方文档 使用C3P0则需要参考c3p0-config-example.xml创建${classpath}/c3p0-config.xml来调节C3P0参数 此时即可调用C3p0Ds.getDataSource()或DruidDs.getDataSource()方法获得默认的数据源 如果要自定义数据库配置文件的参数,请调用相应的init(),传入相关参数 注:Setting对象请参考与之对应的章节 2、com.baijob.commonTools.db.DbUtil 数据库工具,提供了关闭方法:关闭可以传入多个参数,关闭的顺序是按照参数的顺序来的,用于一次性关闭Connnection、Statement、ResultSet等 newSqlRunner方法用于快速新建一个SqlRunner(此介绍参考下问) 3、com.baijob.commonTools.db.DsSetting,用于读取db.setting文件辅助,内部使用 4、com.baijob.commonTools.db.SqlRunner参考Apache的DbUtils工具包,封装了常用的增删改查方法,与com.baijob.commonTools.db.RsHandler配合使用 com.baijob.commonTools.db.RsHandler接口与Apache的DbUtils的ResultSetHandler等价,抽象结果集处理。 二、邮件工具 1、com.baijob.commonTools.mail.MailAccount 邮件账户。 可以调用MailAccount(String accountSettingFileBaseClassLoader)读取相对路径的Setting文件,配置参考mailAccount-example.setting 2、com.baijob.commonTools.mail.MailUtil邮件发送工具,方法请参考注释 此工具依赖javax.mail,请参考pom.xml添加依赖或手动下载 三、网络相关工具 1、com.baijob.commonTools.net.AccessControl访问控制,基于配置文件,可以设定IP白名单或黑名单,可以通过配置文件实现简单的账户验证。 配置文件请参考access-example.xml 2、com.baijob.commonTools.net.Connector 连接对象实体,有host、端口、用户名、密码等属性 3、com.baijob.commonTools.net.HtmlUtil HTML工具,暂时只提供特殊字符转义 4、com.baijob.commonTools.net.SocketUtil socket工具。 isUsableLocalPort() 检测本地某个端口是否可用(可用是指没有被其他程序占用) isValidPort()是否是符合规范的端口号 longToIpv4()将long转换为ipv4地址,反方法是ipv4ToLong() netCat()简易的数据发送方法 5、com.baijob.commonTools.net.SSHUtil SSH相关工具 getSession()获得一个SSH会话 bindPort()将远程主机的端口映射到本地某个端口 6、com.baijob.commonTools.net.URLUtil 将相对、绝对路径转换为URL对象,用于网络或文件流的读写,Setting的配置依赖此工具包 四、线程相关工具 1、com.baijob.commonTools.thread.BaseRunnable 此实现了Runnable接口,扩展了功能。 增加名称、ID,调用次数和时间统计、线程停止接口等,并且在线程运行时,不允许此线程第二次启动。 2、com.baijob.commonTools.thread.Executor 线程池工具 调用静态方法execute()启动线程,此线程在公共的线程池中执行 若想自定义线程池大小或独立控制,可调用newExecutor()实例一个线程池 excAsync()执行一个异步方法 3、com.baijob.commonTools.thread.SyncQueue 阻塞队列,简化了JDK的BlockingQueue

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值