【发布时间】:2015-05-27 18:27:16
【问题描述】:
我正在尝试将 Object 转换为类实例。类实例的对象当然应该继承所有的方法。
这是示例代码 (2) 中的问题,因为我无法准确解释我的意思:
Class Fish {}
Class Dog {}
class Instances() {
private Fish fish = new Fish();
private Dog dog = new Dog();
public Object getInstance(String className) {
if( className.equals("fish") )
return fish;
else
return dog;
}
}
class test() {
Instances in = new Instances();
public static void main(String[] args) {
// 1: works (transmits all the methods of fish)
Fish fish = (Fish)in.getInstance("fish");
// 2: doesn't work (fishObj only has access to the methods of an object and can't access the methods of Fish!)
Object fishObj = null;
fishObj = (Fish)in.getInstance("fish");
}
}
提前谢谢你!
【问题讨论】:
-
如果您通过
Object引用访问它,为什么您认为它应该可以访问Fish方法? -
您已经知道如何编写有效的代码 (1),那您还问什么?
-
@Eran 因为这两个类中的方法正在执行类似的任务并且它们具有相同的名称。我想加载我当前需要的类
-
如果您想使用
Fish方法,您必须将其存储为Fish,或将其在同一行 转换为Fish(例如((First) in.getInstance("fish")).swim(). 没有办法。 -
@Aurus 听起来您希望两个类都实现相同的接口(包含常用方法)并将
getInstance的返回类型更改为该接口。
标签: java eclipse class subclass