Java方法调用类型对象

时间:2011-03-28 22:12:13

标签: java object

我希望有一个方法将Object作为参数,并将其添加到arraylist。后来,我想在这个对象上调用一个方法,但是在时间上,我不想将对象定义为特定类型,只需键入Object即可。我知道该对象包含我想调用的方法,因为我确保只使用该方法传递对象。像这样:

public void addElement(Object obj){
    elementlist.add(obj);
}
.
. 
.
elementlist.get(i).SomeMethodIknowItHas();

但是,这不起作用。有什么方法可以强迫它调用该方法吗?

3 个答案:

答案 0 :(得分:1)

施展它:

((YourObject)element.get(i)).someMethodYouKnowItHas()

另一种方法是将您的底层集合作为泛型类型:

class YourClass {
    List<YourObject> elementList = new ArrayList<YourObject>();

...
    public void addElement( Object obj ) {
       elementList.add( ( YourObject ) obj );
    }

    public void someWhereElse() {
       elementList.get(i).operationOne();
       elementList.get(i).operationTwo();
       elementList.get(i).operationThree();
    }
...
}

不确定你的情况是否合理

答案 1 :(得分:1)

如果您真的不想将对象转换为特定类型,则必须使用反射。

http://java.sun.com/developer/technicalArticles/ALT/Reflection/

但是,这通常被认为是不好的做法,您应该看看是否有某种方法可以将泛型用于接口或基类。你“知道它有”这样的方法的事实告诉我它应该实现一个接口,告诉编译器它有这种方法。

答案 2 :(得分:1)

您可能知道您向ArrayList添加了某种类型的对象并且它位于特定索引处。但是,Java没有。您需要指定ArrayList中的所有内容都是特定类型(或扩展特定的calss,或实现特定的接口),或者您需要将对象强制转换为您知道的类型(并且还要确保什么都没有打破,处理不符合你预期的情况。)