instanceof 与isAssignableFrom
来源:互联网 发布:我的世界js搬运 编辑:程序博客网 时间:2024/06/06 02:54
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("收电费");
- }
- }
0 0
- 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 区别
- git fetch, rebase,pull,merge 区别
- AWK系统化的教程
- Kth Largest Element in an Array
- app进入主页前的广告页面
- 【最佳实践系列】灵活使用单机应用程序中的数据库
- instanceof 与isAssignableFrom
- 实现底部tabhost
- R语言使用RMySQL连接及读写Mysql数据库
- php面向对象(工厂模式与单例模式)
- java生成图片验证码二,加入透明颜色,各种干扰线,干扰点,干扰框,旋转,随机位置
- Linux系统下codeblocks 复制粘贴
- oracle 控制文件
- Android开发 之 Github常见的开源库
- ListView以分页的方式从服务器获取数据