instanceof 与isAssignableFrom
来源:互联网 发布:文华财经 策略 源码 编辑:程序博客网 时间:2024/05/19 14:18
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 区别
- JAVA反射机制的学习
- mongodb课程介绍
- selenium的窗口跳动
- viewpager的滑动事件总结(滑动在toolbar上显示页数,滑动到最后一页显示下载的dialog)
- Spark性能优化:shuffle调优
- instanceof 与isAssignableFrom
- SpringMVC 之@RequestBody 接收Json数组对象
- java 构造函数 求圆的面积
- Android ListView 设置分割线的设置
- LeetCode--No.56--Merge Intervals
- 位,字,字节,字符,编码,ASCII,UTF,GB精析
- 怎样在自己的网页中嵌入视频?
- Spark性能优化:资源调优篇
- 【网络】select/poll/epoll事件处理图示