一,instanceof
某个实例,是否是某个指定的类的类型。
比如:
public class Father{
}
public class sub extends Father{}
public class Test() {
public static void main(String[] args){
Father f = new Father();
System.out.println(f instanceOf Father);
}
}
二,className对比
public class Father{
}
public class sub extends Father{}
public class Test() {
public static void main(String[] args){
Father f = new Father();
System.out.println(f.getName().equals(Father.class.getName()));
}
}
三,两个对象都是Class对象,不是实例的时候
isAssignableFrom 方法
@AfterThrowing(value = "transactionAnno(anno)", throwing = "e", argNames = "anno,e")
public void saveExceptionLog(MultiTransactionAnno anno, Throwable e) {
Class[] classes = anno.rollbackFor();
for (Class cla : classes) {
if (cla.isAssignableFrom(e.getClass())) {
Stack<DataSourceTransactionManager> dataSourceTransactionManagers = new Stack<>();
Stack<TransactionStatus> transactionStatuses = new Stack<>();
openTransaction(dataSourceTransactionManagers, transactionStatuses);
try {
commit(dataSourceTransactionManagers, transactionStatuses);
} catch (Throwable multiAspectException) {
logger.error("异常", multiAspectException);
rollback(dataSourceTransactionManagers, transactionStatuses);
}
}
}
}