我可以使用接口将对象强制转换为类吗?

时间:2018-03-22 12:41:50

标签: java android

我有一个对象obj,我希望将其强制转换为实现接口View的{​​{1}}。

Tool

我想避免创建两个对象来处理这种情况,或者每次我想调用View或Tool的实现方法时都要使用一个对象。

如果可能,使用两个或更多接口时也是如此。我记得我可以做的一种语言class Whatever { View viewObj; Tool toolObj; ... public void setViewTool( View obj ) { viewObj = obj; toolObj = (Tool) obj; } ... }

示例

我认为问题的标题和第一行很清楚。但是,可能不是。

我有三个工具可以在应用中显示。一个是扩展LinearLayout,另外两个是FrameLayout。这些视图对象必须实现Tool接口,因为在它进入,完成以及用户执行某些手势时会调用方法。但是,它也是一种观点,当我需要展示时,它需要调用像View<Tool, and, others, interfaces>这样的东西。

只是为了澄清,它在上面的例子中工作得很好。但我必须设置两个变量来处理同一个对象,一个用于处理与视图方面相关的内容,另一个用于处理工具界面。

我不能说通用课程不起作用,但是我尝试过的方式,它没有。我希望的是,可以创建一个类属性setLayout, addView, animate

现在,我几乎肯定这个答案不可能:Java - Defining a member that extends class A and implements interface B

1 个答案:

答案 0 :(得分:0)

如果你的问题是

  

我知道我可以将对象(A)转换为另一个(B),但如果B类实现了接口(C),我可以这样做吗?

然后答案是肯定的。它不会改变B类实现C的任何东西。但是对于任何对象转换,只有当A的实例a也是B的实例时才可以这样做。你可以像这样测试它:

A a = new A()
if(a instanceof B) {
    //a is an instance of B
}

如果A的实例a也是B的实例,则意味着它实现了C.所以你可以做到

C c = (C) a;
B b = (B) a;