RuntimeException的抽象子类

leetao881212 2016-09-23 04:45:06
最近遇到一个奇怪问题,如果一个类 AException 继承了RuntimeException, 然后另一个类BException 继承了AException,那么BException类型的变量 be, 执行be instanceof RuntimeException 会返回true。 这个道理很显然。

但是如果AException是一个抽象类的话, 在执行be instanceof RuntimeException操作的时候,编译器会直接提示"Incompatible conditional operand types BException and RuntimeException"

请问哪位高手能解答一下~
...全文
249 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
leetao881212 2016-09-26
  • 打赏
  • 举报
回复
应该是IDE编译器的问题,和版本也没关系,应该是那天编译器出了什么问题,今天打开电脑都不会报错了,囧~~~
leetao881212 2016-09-26
  • 打赏
  • 举报
回复
引用 1 楼 u013185616 的回复:
public abstract class AException extends RuntimeException{

}
public class BException extends AException{
	
	public static void main(String[] args){
		BException be = new BException();
		if(be instanceof RuntimeException){
			System.out.println(true);
		}
	}
}
你说的是这样么??貌似没报错吧!
差不多类似 难道如3楼所说 是eclipse版本的问题? 你用的eclipse和jdk版本是多少? 我用的eclipse版本是Version: Mars Release (4.5.0), jdk版本是1.8.0_65
howsun_zh 2016-09-24
  • 打赏
  • 举报
回复
Eclipse的Bug,版本多少?可以找到语法验证器修改。
soton_dolphin 2016-09-23
  • 打赏
  • 举报
回复
不应该啊,不科学啊
I,Frankenstein 2016-09-23
  • 打赏
  • 举报
回复
public abstract class AException extends RuntimeException{

}
public class BException extends AException{
	
	public static void main(String[] args){
		BException be = new BException();
		if(be instanceof RuntimeException){
			System.out.println(true);
		}
	}
}
你说的是这样么??貌似没报错吧!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧