instanceof 与isAssignableFrom
来源:互联网 发布:电脑故障检测软件 编辑:程序博客网 时间:2024/05/22 03:35
isAssignableFrom 是用来判断一个类class1是否和另外一个类class2 相同或是其超类或接口
通常调用格式是:Class1.isAssignableFrom(Class2) , 调用者和参数都是java.lang.Class类型
而instanceof是用来判断一个对象实例是否是另外一个类或接口的实现,或者是否是其子类子接口的实现
通常调用格式是: oo instanceof TypeName,第一个参数是对象实例名,第二个参数是具体的类名或接口名。
通常调用格式是:Class1.isAssignableFrom(Class2) , 调用者和参数都是java.lang.Class类型
而instanceof是用来判断一个对象实例是否是另外一个类或接口的实现,或者是否是其子类子接口的实现
通常调用格式是: oo instanceof TypeName,第一个参数是对象实例名,第二个参数是具体的类名或接口名。
instanceof 针对实例
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("收电费");
- }
- }
- isAssignableFrom与instanceof区别
- isAssignableFrom与instanceof比较
- isAssignableFrom() 与 instanceof
- instanceof 与isAssignableFrom
- instanceof 与isAssignableFrom
- instanceof 与isAssignableFrom
- isAssignableFrom与instanceof区别
- instanceof 与isAssignableFrom
- instanceof与isInstance,isAssignableFrom
- java instanceof与isAssignableFrom
- instanceof 与isAssignableFrom
- instanceof 与isAssignableFrom
- instanceof 与isAssignableFrom
- instanceof 与isAssignableFrom区别
- isAssignableFrom()与instanceof()
- isAssignableFrom 与 instanceof 的区别
- isAssignableFrom 与 instanceof 的区别
- Class.isAssignableFrom与 instanceof 区别
- Servlet 应用
- Ways Available To Identify HTML Element
- Powerdesiger 画uml用例图
- ubuntu下svn服务器的搭建
- Android intent intent-filter
- instanceof 与isAssignableFrom
- 设计模式笔记(9 INTERPRETER & ITERATOR)
- 昆明5名城管志愿者开执法车持刀威胁他人被开除-城管乱象-城管负面-城管志愿者
- 分享一些D瓜哥攒的比较好的Web开发资料
- window平台Redis安装
- 做开发----你的位置在哪里?
- 汇编指令大全(有注释)
- 设计模式学习之策略模式
- 章立凡:不可复制的“南巡讲话”