关于android开发中使用的java语法的问题
我正在阅读一篇关于android开发的初学者教程,其中的代码中有这样一行:关于android开发中使用的java语法的问题,java,android,syntax,Java,Android,Syntax,我正在阅读一篇关于android开发的初学者教程,其中的代码中有这样一行: TextView fortune = (TextView) findViewById(R.id.fortune_text); 我对Java相当陌生,但我了解创建变量的基础知识。因此,创建一个新的int变量: int-someInt=4 看起来和上面发生的事情有点不同。我猜我们是在创建TextView对象的实例,然后从TextView类调用findViewById方法?但是为什么会出现(文本视图)位呢?我们告诉jav
TextView fortune = (TextView) findViewById(R.id.fortune_text);
我对Java相当陌生,但我了解创建变量的基础知识。因此,创建一个新的int变量:
int-someInt=4
看起来和上面发生的事情有点不同。我猜我们是在创建TextView对象的实例,然后从TextView类调用findViewById方法?但是为什么会出现(文本视图)位呢?我们告诉java在这里做什么?
findViewbyId()
返回一个视图
类TextView
是View
的一个子类,它使用(TextView)
部分将其强制转换为TextView
。findViewbyId()
返回一个视图
类TextView
是View
的一个子类,它使用(TextView)
部分将其强制转换为TextView
。基本上,语句的左半部分是您分配的内容-右半部分(在=)是值/对象的来源:
TextView fortune = (TextView) findViewById(R.id.fortune_text);
上面的一行声明了TextView类型的对象变量,并将其分配给方法findViewById(String)
的返回。(TextView)
部分确保方法返回被强制转换为TextView对象。要复制对象,可以编写:
TextView someFortune = fortune;
这与下一行的语法更接近(因为您正在分配相同/兼容的类型)
下一行:
int someInt = 4;
声明一个int
,并只分配其值(无方法调用)。因为“4”是一个int
,所以不需要显式强制转换它的类型(反正它是原语)
更新:
对象类型转换的说明:
基本上,语句的左半部分是您分配的内容-右半部分(在=)是值/对象的来源:
TextView fortune = (TextView) findViewById(R.id.fortune_text);
上面的一行声明了TextView类型的对象变量,并将其分配给方法findViewById(String)
的返回。(TextView)
部分确保方法返回被强制转换为TextView对象。要复制对象,可以编写:
TextView someFortune = fortune;
这与下一行的语法更接近(因为您正在分配相同/兼容的类型)
下一行:
int someInt = 4;
声明一个int
,并只分配其值(无方法调用)。因为“4”是一个int
,所以不需要显式强制转换它的类型(反正它是原语)
更新:
对象类型转换的说明:
我猜我们是在创建TextView对象的实例,然后从TextView类调用findViewById方法
TextView fortune
部分没有创建任何内容,只是声明了一个TextView
类型的变量
findViewById()
方法返回一个View
实例,它是所有小部件的父类。要将其用作文本视图
,必须先将其强制转换
我猜我们是在创建TextView对象的实例,然后从TextView类调用findViewById方法
TextView fortune
部分没有创建任何内容,只是声明了一个TextView
类型的变量
findViewById()
方法返回一个View
实例,它是所有小部件的父类。要将其用作文本视图
,必须首先强制转换它。示例中的强制转换与继承有关。方法findViewById
返回类View
的实例/对象,即返回视图/小部件TextView
是View
的一个子类,是您想要访问的对象类型。转换位——(TextView)
——是通知编译器您的意图的方式,即您希望访问TextView
提供的扩展方法集,而不仅仅是任何视图
可能值得检查更多细节。示例中的强制转换与继承有关。方法
findViewById
返回类View
的实例/对象,即返回视图/小部件TextView
是View
的一个子类,是您想要访问的对象类型。转换位——(TextView)
——是通知编译器您的意图的方式,即您希望访问TextView
提供的扩展方法集,而不仅仅是任何视图
可能值得查看更多详细信息。查看geek_ji在这里发布的答案,以获得一个非常基本的理解。查看geek_ji在这里发布的答案,以获得一个非常基本的理解。当你说它将其转换为TextView时,这意味着什么?当你说它将其转换为TextView时,这意味着什么?啊,现在,这就更有意义了。但为什么要将其声明为TextView的变量类型呢?这对变量有什么影响?为什么不告诉java:objectfortune=blablabla?如果你写的是
objectfortune=blablabla
,那么你就不能使用TextView
类的任何方法,只能使用Object
类的方法(在这种情况下没有那么有用)。啊,这现在更有意义了。但为什么要将其声明为TextView的变量类型呢?这对变量有什么影响?为什么不告诉java:objectfortune=blablabla?如果你写的是objectfortune=blablabla
,那么你就不能使用TextView
类的任何方法,只能使用Object
类的方法(在这种情况下不是很有用)。你能告诉我为什么我们需要强制转换吗?当我们刚开始编写“TextView Fortune=”时,java不应该知道这一点吗?这是因为您感到沮丧