该用户如何定义数据类型类型?

时间:2015-03-25 15:24:23

标签: java android type-conversion

Button buttonClick = (Button) findViewById(R.id.button)

应用Java语法,上面的语句表示方法返回的值 findViewById() 已更改到数据类型按钮,并存储在变量 buttonClick 中。

我研究过Java(显然还不够!),并且从未遇到类型转换用户定义的数据类型。 这是如何工作的?

2 个答案:

答案 0 :(得分:1)

将@nikis响应放入代码中:

public class View extends Object {...}
public class Label extends View {...}
public class Button extends View {...}

public View findViewById(String id) {...}

//normal assignment
View v = findViewById(viewID); 

//implicit casting to base class
Object o = findViewById(objectID); 

//compile time error because the return might not be a Button
Button b = findViewById(buttonID);

//explicit cast forces compiler to treat the return as a Button
//if the return is not a Button, then ClassCastException is trown at runtime
Button bb = (Button)findViewById(buttonID);

答案 1 :(得分:0)

这是显式转换,它起作用,因为Button类扩展了View类,它是findViewById方法的返回类型。您应该使用显式转换进行下游转换,因为它不安全。您可以在Java中的任何对象之间使用显式强制转换,但如果实际上不可能进行强制转换,则您将在运行时获得ClassCastException。另一方面,存在隐式转换,它总是安全的,因此不需要声明它。隐式投射是上游投射,例如从ViewObject