【发布时间】:2014-08-10 23:33:37
【问题描述】:
我正在尝试检查扩展类 B 的类 A 是否是某个接口的实例。
基本上这是我的设置:
public class House
{
(variables)
public House(variables) {...}
}
public class Kitchen extends House implements IFurniture
{
(variables)
public Kitchen(variables)
{
super(variables);
}
}
public class Bathroom extends House implements IWalls
等等……
而且我有一个方法,我可以得到一个铸造的、家庭版的厨房和浴室。 我基本上想这样做:
public boolean hasFurniture(House house)
{
if (house instanceof IFurniture){return true;}
}
我是否需要使用 house.getClass().getInterfaces() 并且考虑到参数已被强制转换,这是否可行?
问题是我正在为游戏编写模组,但我无法编辑游戏类。在这种情况下,只能编辑 Kitchen、Bathroom 和 hasFurniture。
也忽略我的类名,它们只是示例名称,以免您不小心混淆类。
【问题讨论】:
-
您的
hasFurniture方法有什么问题?它应该可以工作。 -
顺便说一句,您的类层次结构没有多大意义。厨房不是房子。浴室不是房子。它们不应该是 House 的子类。它们可能应该是 Room 的子类,而 House 应该包含房间的集合。
-
Eran,我的 IDE 说不能将 House 转换为 IFurniture,当然我的类层次结构没有多大意义,这不是重点。重点是展示我当前的设置。