我完全困惑下面的代码是向上转换还是向下转换。 如果可以,怎么办?
是TextView
的超类,我假设它是View
的子类型。
TextView textView = (TextView) findViewById(R.id.textView);
答案 0 :(得分:1)
其称为DownCasting。您可以深入了解here
答案 1 :(得分:1)
{{1}}
您提到的代码是 downcasting 。由于findViewByID返回 View 对象,而TextView是 View 类的子级。从父级投射到子级时称为 Down Casting ,而从父级投射到子级时称为 Upcasting 。
注意:强制转换时,通常不需要强制隐式转换。
答案 2 :(得分:1)
简而言之,这是不正确的。
此行:
findViewById(R.id.textView);
会返回一个视图,但是它是什么样的视图? (按钮,列表,TextView,..) 看这个例子:
public abstract class Car{
public abstract void power();
}
public class BMW extends Car{
public void power(){
System.out.println(2200);
}
}
public class Benz extends Car{
public void power(){
System.out.println(2100);
}
}
创建以上类(宝马,奔驰)的对象
BMW bmw = new BMW();
Benz benz = new Benz();
public class CarFactory{
public void create(Car car){
if(car instanceof Benz)
Benz benz = (Benz) car;
else
BMW bmw = (BMW) car ;
}
}
它们(奔驰,宝马)都是显式的,例如TextView。
希望对您有帮助