java 强转对象 object向下转型自定义的类,为啥eclipse会报黄线?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 强转对象 object向下转型自定义的类,为啥eclipse会报黄线?相关的知识,希望对你有一定的参考价值。
java 强转对象 object向下转型自定义的类,为什么eclipse会报黄线?类型是正确的运行也不报错,就是黄线看着别扭
参考技术A 并不会的吧,你不喜欢黄线可以在方法前面加上注释@SuppressWarnings(这个注释是压制警告的),也可以在eclipse属性里面直接修改:Windows-->preferences-->general->Editors-->Text Editors-->Spelling
将右侧的enable spell checking的勾选去掉,点击OK。
如果此时之前写过的代码上面还是有小黄线,这里我们选择project下的clean,选择clean all project,然后点击OK即可完成。
这样小黄线就会全部消失了。
JAVA对象 向上转型upcasting,向下转型downcasting
1:向上转型
向上转型,就是java多态中的父类引用指向子类对象。但要注意的是 父类引用不可以访问子类新增加的成员(熟悉和方法)
代码举例:
/** * 定义一个父类 */ public class Anaimal{ private Long height; public Long getHeight() { return height; } public void setHeight(Long height) { this.height = height; } }
/** * 下面的main方法可测 父类的引用指向子类的对象 * 向上转型 也就是多态 */ public class Dog extends Anaimal{ private Long dogHeight; public Long getDogHeight() { return dogHeight; } public void setDogHeight(Long dogHeight) { this.dogHeight = dogHeight; } public static void main(String[] args) { //父类引用指向子类对象 Anaimal an = new Dog(); //只能访问父类的getHeight方法 不能访问子类的getDogHeight 因为Dog是当做anaimal用的 an.getHeight(); } }
以上 main()方法中 虽然an是指向Dog()的引用,但是an是当做Anaimal用的 所以看不到Dog独有的那部分
当然: 如果an想访问 Dog独有的对象,可以使用向下转型
public static void main(String[] args) { //父类引用指向子类对象 Anaimal an = new Dog(); //只能访问父类的getHeight方法 不能访问子类的getDogHeight 因为Dog是当做anaimal用的 an.getHeight(); //如果想访问Dog独有的方法,可以把 an向下转型成Dog //TODO 注意 如果是Anaimal an = new Anaimal(); an是转不成Dog的 Dog an2 = (Dog)an; an2.getDogHeight(); }
代码TODO 已经说明,使用向下转型的前提,是当前引用 指向的就是所需转型子类的对象。
否则会报错:java.lang.ClassCastException
以上是关于java 强转对象 object向下转型自定义的类,为啥eclipse会报黄线?的主要内容,如果未能解决你的问题,请参考以下文章
Java 所有对象强转到Object之后,都能够完整的强转回去吗