【问题标题】:When do I have to downcast something?我什么时候必须沮丧?
【发布时间】:2014-11-08 04:41:19
【问题描述】:

因为我是 Android 新手。我在向下转换方面遇到了一些困难。

  1. 我不知道我们什么时候必须沮丧。例如:
Button button = (Button) findViewById(R.id.button1);

在这种情况下,我们为什么要低调呢?上次我收到一个模糊的答案说因为它返回一个视图对象,因此你需要向下转换它。

  1. 当我们可以使用this 作为上下文时
this.m_member = ...;

有人愿意就上述问题给出一些解释(和例子)吗?

【问题讨论】:

    标签: java android android-intent casting


    【解决方案1】:

    我什么时候必须沮丧?

    只要您获得的对象的类型(例如,方法)不够具体,您就可以保证该对象实际上是更具体的类型。

    在您的情况下,您有一个返回View 的方法,即更具体的类型 Button(因为Button subclasses View。)因此您可以强制转换以告诉编译器您可以保证给定对象具有更具体的类型 - 作为回报,您可以访问您要转换的更具体类型的方法。

    【讨论】:

    • 我不会称之为向下转型。向上转型似乎更重要。那存在吗?以前从未听说过。
    • @greenapps 在 Java 领域,它往往被称为“强制转换”,当您想要在对象上声明更具体的类型时总是使用它。
    • 这对我没有帮助。在我的土地上,我们投了一整天。所以选角不是重点。这是关于向下/向上。
    • @greenapps 好吧,向上转型正在转变为更通用的类型,向下转型正在转变为更具体的类型。但是,只有在向下转换时才需要手动转换,因为这可能会导致问题(如果我将狗向上转换为哺乳动物,所有的狗都是哺乳动物,所以这将始终有效。但是,如果我将哺乳动物向下转换为狗,并不是所有的哺乳动物都是狗,所以我最终可能会得到一个无效的类型。)
    • 对不起。那是很多话,但你仍然没有对我的评论I would not call that downcasting.做出反应。
    猜你喜欢
    • 2013-10-23
    • 2011-03-18
    • 2012-04-26
    • 1970-01-01
    • 2013-04-30
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多