instanceof 与isAssignableFrom区别
来源:互联网 发布:网络电视怎么看电影 编辑:程序博客网 时间:2024/06/06 02:41
nstanceof 针对实例
isAssignableFrom针对class对象
isAssignableFrom 是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的超类或接口。
通常调用格式是
- Class1.isAssignableFrom(Class2)
调用者和参数都是 Java.lang.Class 类型。
而 instanceof 是用来判断一个对象实例是否是一个类或接口的或其子类子接口的实例。
格式是:
- oo instanceof TypeName
第一个参数是对象实例名,第二个参数是具体的类名或接口名,例如 String,InputStream。
- public class Test {
- public static void main(String[] args) {
- List<String> list = new ArrayList<String>();
- System.out.println(list instanceof List);
- System.out.println(list instanceof ArrayList);
- /* System.out.println(list.getClass());
- System.out.println(List.class);
- System.out.println(ArrayList.class);*/
- System.out.println(list.getClass().isAssignableFrom(List.class));
- System.out.println(List.class.isAssignableFrom(list.getClass()));
- }
- }
结果:
true
true
false
true
其中instanceof是子-->父
isAssignableFrom是父-->子
我们应该尽量少用instanceof 运算符
应该尽量用多态来替代它
- public interface Accounts {
- }
- public class WaterAccounts implements Accounts {
- }
- public class ElectricityAccounts implements Accounts {
- }
- //客户端
- public class test {
- public static void main(String[] args) {
- Accounts accsWater = new WaterAccounts();
- Accounts accsElectricity = new ElectricityAccounts();
- acceptAcounts(accsWater);
- }
- // 第一种使用instanceof
- public static void acceptAcounts(Accounts accs) {
- if (accs instanceof WaterAccounts) {
- System.out.println("收水费");
- } else if (accs instanceof ElectricityAccounts) {
- System.out.println("收电费");
- }
- }
- // 第二种使用多态
- public static void acceptAcounts(WaterAccounts accs) {
- System.out.println("收水费");
- }
- public static void acceptAcounts(ElectricityAccounts accs) {
- System.out.println("收电费");
- }
- }
阅读全文
0 0
- isAssignableFrom与instanceof区别
- isAssignableFrom与instanceof区别
- instanceof 与isAssignableFrom区别
- isAssignableFrom 与 instanceof 的区别
- isAssignableFrom 与 instanceof 的区别
- Class.isAssignableFrom与 instanceof 区别
- isAssignableFrom与instanceof的区别
- isAssignableFrom与instanceof的区别
- Class.isAssignableFrom与 instanceof 区别
- isAssignableFrom与instanceof的区别
- isAssignableFrom与instanceof的区别
- Class isAssignableFrom与instanceof区别
- Class.isAssignableFrom与 instanceof 区别
- Class.isAssignableFrom与 instanceof 区别
- instanceof 与isAssignableFrom的区别
- 【Java基础】Class.isAssignableFrom与 instanceof 区别
- instanceof, isinstance, isAssignableFrom 区别
- isAssignableFrom和instanceof区别
- 百度2016实习-编号转换
- es6基础回顾--Generator函数
- css中设置隐藏,如何对隐的部分添加点击事件
- 快速排序算法的几种实现
- c# c均值聚类及DBSCAN聚类
- instanceof 与isAssignableFrom区别
- MySQL---数据库从入门走向大神系列(三)-修改数据库编码/DOS窗口编码
- Python: PS 图像调整--黑白
- 51nod 1821 最优集合 (思维+并查集or栈)
- UIButton,设置为UIButtonTypeCustom类型时,做圆角效果
- Release版本只在iOS9.2及以下闪退
- PAT 1005. 继续(3n+1)猜想
- ARM微处理器第二弹:寄存器
- Pytorch学习笔记(六)