【问题标题】:What do you mean by (Class name) while declaring objects in Java - Android [duplicate]在Java中声明对象时(类名)是什么意思-Android [重复]
【发布时间】:2020-06-15 10:54:07
【问题描述】:

在学习了基础知识后,我最近开始在 Java 中进行 android 开发,我注意到了一种初始化对象的新方法。例如:

TextView t = (TextView) findViewById(R.id.textbox);

这里我想知道(TextView)是什么意思,为什么我们不能通过静态方法或者new关键字来初始化一个对象。谢谢!

编辑

我还想知道将超类对象强制转换为基类对象时会发生什么(继承了哪些属性)

【问题讨论】:

  • 这称为类型转换。您可以在基本 Java 教程中获得更多信息 :)
  • 那么findViewById()究竟返回了什么
  • 这完全是一个不同的问题,你可以找到答案in the docs
  • findViewById() 返回一个已创建并位于视图层次结构中的小部件。如果这条线来自一个活动,那么很可能视图层次结构是由setContentView() 调用在此findViewById() 调用之前的某个时间设置的。

标签: java android android-studio


【解决方案1】:
TextView t = (TextView) findViewById(R.id.textbox);

语句findViewById(R.id.textbox) 从您的Activity(或Fragment)正在膨胀的xml 布局中返回一个View 对象,但变量t 需要一个TextView 对象,因此您必须显式将其转换为带有(TextView) 表达式的TextView 对象。

为什么我们不能通过静态方法或新方法来初始化一个对象 关键字。

您可以使用new 关键字创建TextView 对象,例如TextView t = new TextView(this),但您必须将其动态放置到您的活动中。

【讨论】:

  • 那么当我们将View 对象投射到其中时,TextView 对象的属性会发生什么变化?
  • TextView 对象保留其属性以及 Vew 类的所有属性,考虑到 TextView 类已经从 View 类继承。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多