- 浏览: 624918 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (819)
- java开发 (110)
- 数据库 (56)
- javascript (30)
- 生活、哲理 (17)
- jquery (36)
- 杂谈 (15)
- linux (62)
- spring (52)
- kafka (11)
- http协议 (22)
- 架构 (18)
- ZooKeeper (18)
- eclipse (13)
- ngork (2)
- dubbo框架 (6)
- Mybatis (9)
- 缓存 (28)
- maven (20)
- MongoDB (3)
- 设计模式 (3)
- shiro (10)
- taokeeper (1)
- 锁和多线程 (3)
- Tomcat7集群 (12)
- Nginx (34)
- nodejs (1)
- MDC (1)
- Netty (7)
- solr (15)
- JSON (8)
- rabbitmq (32)
- disconf (7)
- PowerDesigne (0)
- Spring Boot (31)
- 日志系统 (6)
- erlang (2)
- Swagger (3)
- 测试工具 (3)
- docker (17)
- ELK (2)
- TCC分布式事务 (2)
- marathon (12)
- phpMyAdmin (12)
- git (3)
- Atomix (1)
- Calico (1)
- Lua (7)
- 泛解析 (2)
- OpenResty (2)
- spring mvc (19)
- 前端 (3)
- spring cloud (15)
- Netflix (1)
- zipkin (3)
- JVM 内存模型 (5)
- websocket (1)
- Eureka (4)
- apollo (2)
- idea (2)
- go (1)
- 业务 (0)
- idea开发工具 (1)
最新评论
-
sichunli_030:
对于频繁调用的话,建议采用连接池机制
配置TOMCAT及httpClient的keepalive以高效利用长连接 -
11想念99不见:
你好,我看不太懂。假如我的项目中会频繁调用rest接口,是要用 ...
配置TOMCAT及httpClient的keepalive以高效利用长连接
instanceof 针对实例
isAssignableFrom针对class对象
isAssignableFrom 是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的超类或接口。
通常调用格式是
调用者和参数都是 java.lang.Class 类型。
而 instanceof 是用来判断一个对象实例是否是一个类或接口的或其子类子接口的实例。
格式是:
第一个参数是对象实例名,第二个参数是具体的类名或接口名,例如 String,InputStream。
结果:
true
true
false
true
其中
instanceof是子-->父
isAssignableFrom是父-->子
我们应该尽量少用instanceof 运算符
应该尽量用多态来替代它
参考:http://blog.csdn.net/kjfcpua/article/details/7045207
http://www.yiibai.com/java/lang/class_isassignablefrom.html
http://www.iteye.com/problems/32021
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("收电费"); } }
参考:http://blog.csdn.net/kjfcpua/article/details/7045207
http://www.yiibai.com/java/lang/class_isassignablefrom.html
http://www.iteye.com/problems/32021
发表评论
-
BigDecimal/Long 前后端交互失去精度解决方法
2024-01-22 10:31 377BigDecimal/Long 前后端交互失去精度解决方法 ... -
在Java 8中可以通过下面的方式获取Map对象的第一个元素
2023-12-18 13:48 304Java 8中如何获取Map对象的第一个元素 -
用EXCEL批量生成INSERT语句
2023-03-18 11:19 670用EXCEL批量生成INSERT语句 -
使用Java访问FTP文件时再次调用方法client.retrieveFileStream(ftpFile)会返回null的问题
2023-01-07 21:50 697使用Java访问FTP文件时再次调用方法client.retr ... -
java获取本月最后一天
2022-12-28 08:29 2327java获取本月第一天或者最后一天方法 @Test ... -
www
2022-11-12 09:03 0public void saveTransScheduleBi ... -
Notepad++删除代码中的注释,可删除//单行注释和/**/多行注释
2022-10-20 14:17 720Notepad++删除代码中的注释,可删除//单行注释和/** ... -
接口限流算法有哪些
2022-05-05 23:27 225接口限流的几种算法 接口限流算法有哪些? nginx限流方案 ... -
CompletableFuture学习记录
2022-04-25 18:00 220CompletableFuture学习记录 -
java单例模式几种实现方式
2022-04-18 11:48 231java单例模式几种实现方式 -
临时的几个网站
2022-03-31 13:33 243https://www.cnblogs.com/chengxu ... -
Java Stream - 如何filter带谓词
2022-03-23 23:53 227Java Stream Java Lambda语法 J ... -
URLConnection的连接、超时、关闭用法总结
2022-03-08 17:23 549URLConnection的连接、超时、关闭用法总结 jav ... -
关于java中的this::
2022-02-26 23:07 198关于java中的this:: -
StringRedisTemplate和RedisTemplate的区别和选择
2022-02-10 23:05 240StringRedisTemplate和RedisTempla ... -
ForkJoinPool初略分析
2022-02-10 11:44 263ForkJoinPool初略分析 多线程 ForkJoin ... -
service中@NotNull的使用
2022-01-23 13:48 1477@Validated和@NotNull加到什么上面,接口还是 ... -
Java8 Collectors.toMap的两个大坑
2022-01-21 15:54 298Java8 Collectors.toMap的两个大坑 -
踩坑之SimpleAsyncTaskExecutor
2022-01-13 20:50 801踩坑之SimpleAsyncTaskExecutor Sp ... -
都在建议你不要直接使用 @Async 注解
2022-01-10 11:54 748引用如果不自定义异步方法的线程池默认使用SimpleAsync ...
相关推荐
也就是说,如果A类是B类的父类(或者A接口是B接口的扩展),那么Class对象表示A的`isAssignableFrom`方法调用表示B的Class对象时会返回true。这是一个非常基础但关键的概念,尤其在多态和泛型中应用广泛。 在描述中...
在Java编程语言中,`Class` 类提供了一个非常有用的方法 `isAssignableFrom()`. 这个方法主要用于判断一个类或接口是否可以被赋值给另一个类或接口,即判断前者是否是后者的超类或超接口。这个功能在泛型、反射以及...
判断一个类是否为另一个类的子类或父类可以使用 Class 对象的 isAssignableFrom() 方法,该方法返回一个布尔值,表示该类是否为另一个类的子类或父类。 在 Java 中,我们可以使用反射机制来获取类中的成员变量、...
`isAssignableFrom(Class<?> cls)`方法同样是`Class`类中的一个方法,用于判断当前类或接口是否可以被赋予由`cls`参数指定的类型。如果当前类可以赋值给`cls`类型的变量,则返回`true`;否则返回`false`。其用法如下...
反射还可以用于检查类是否实现了特定接口或继承自特定父类,使用`isAssignableFrom()`方法。例如: ```java if (String.class.isAssignableFrom(clazz)) { System.out.println("Class is a string-like."); } ``` ...
1. 使用`Class.forName(String className)`方法,传入类的全限定名(包括包名)来获取对应的`Class`对象。 ```java Class<?> c = Class.forName("java.lang.String"); ``` 2. 直接使用类名或基本类型的`.class`...
- 使用`Class.forName(String className)`静态方法,传入类的全限定名(包括包名)。 - 对象的`getClass()`方法,例如:`MyClass obj = new MyClass(); Class<?> c = obj.getClass();` - 类的`class`关键字,例如...
1. 使用`Class.forName("类全名")`,此方法需要提供类的完全限定名(包括包名),并可能抛出`ClassNotFoundException`。 2. 调用对象的`getClass()`方法,如`new Demo().getClass()`,这会返回该对象所属类的`Class`...
简单来说,可以使用Type.IsAssignableFrom方法: typeof(IFoo).IsAssignableFrom(bar.GetType()); typeof(IFoo).IsAssignableFrom(typeof(BarClass)); 从字面意思可以看出,IsAssignableFrom表示BarClass类型能否...
3. **接口扫描**:为了找到实现特定接口的所有类,我们需要遍历类路径,加载每个类,并使用`Class.isAssignableFrom(Class<?> clazz)`检查该类是否实现了目标接口。`getInterfaces()`方法可以获取类实现的所有接口。...
使用`Class.newInstance()`方法可以无参构造函数创建对象,但如果有参数的构造函数,需要通过`Constructor`类的`getDeclaredConstructor()`或`getConstructor()`方法获取构造器,然后调用`newInstance()`创建对象。...
- `isAssignableFrom(Class<?> clazz)`判断是否可以从一个类派生出另一个类。 - `isInterface()`判断是否为接口。 - `isPrimitive()`判断是否为基本类型。 - `getModifiers()`获取方法或字段的修饰符。 6. 枚举...
`Class`对象提供了`getInterfaces()`和`isAssignableFrom()`方法,用于检查类是否实现特定接口或是否可以赋值给某个类。同时,可以使用`getAnnotations()`和`isAnnotationPresent()`来获取和检查类、方法或字段上的...
1. 使用`Class.forName()`方法,传入完全限定类名,例如`Class.forName("java.lang.String")`。 2. 对象的`getClass()`方法,如`String str = "Hello"; Class<?> clazz = str.getClass();`。 3. 类的`class`关键字,...
- `isAssignableFrom(Class<?> c)`: 检查当前Class对象是否可以被指定的Class对象赋值。 4. **创建对象**: - `newInstance()`: 如果类有无参构造器,可以使用此方法创建类的对象。 - `Constructor<?> get...
- 获取接口实现:`boolean isAssignableFrom(Class<?> clazz2)`判断类是否能被转换为`clazz2`类型。 - 实现序列化与反序列化:`ObjectInputStream`和`ObjectOutputStream`可以通过`readObject()`和`writeObject()`...
但我们可以自定义解决方案,通过遍历所有已加载的类,并检查它们是否通过`isAssignableFrom()`方法表明它们是目标类的子类。以下是一个简单的示例: ```java public List<Class<?>> getAllSubclasses(Class<?> ...
5. **接口和泛型处理**:反射同样适用于接口,可以检查类是否实现了特定接口,通过`isAssignableFrom(Class<?> c)`判断。对于泛型,虽然运行时擦除,但可以通过方法签名获取到泛型信息。 6. **异常处理**:反射操作...
反射机制也可以用来检查类是否实现了特定接口,通过`Class`对象的`isAssignableFrom()`方法,可以判断一个类是否可以从另一个类或接口进行赋值。 6. 泛型处理 尽管Java的泛型在编译时被擦除,但反射仍然提供了对...