操纵其他类的方法

时间:2013-12-30 18:41:37

标签: java vector

可以从另一个类操作来自Java中Vector类的contains()方法(不扩展Vector类)吗?

假设我们有这个:

class AuxType {
    String name;
    int type;

    AuxType(String name, int type) {
        this.name = name;
        this.type = type;
    }
}

class Main {
    void aMethod() {
        Vector<AuxType> v = new Vector<AuxType>();
        v.add(new AuxType("a", 1));
        v.add(new AuxType("b", 2));
        v.add(new AuxType("c", 3));

        for (int i = 0; i < v.size(); i++) {
            if (v.get(i).type == 2) {
                System.out.println("Found it!");
            }
        }
    }
}

for / if行可以写成

if (v.contains(2)) {
    //
}

我可以通过哪种方式更改contains()的工作方式(在AuxType类或Main中的aMethod()函数中)?

编辑:不是重复

我没有要求从类中调用方法,而是在不扩展该类的情况下更改它。

1 个答案:

答案 0 :(得分:2)

您正在寻找的是mixin,不,它在Java中不可用。

在Java中,这个问题通过使用继承来解决(虽然有些冗长,但确实很有意义)。

理论上它是possible to add a method dynamically而没有直接定义一个新类,但它对于任务来说真的很复杂和过度。

只需扩展类或定义实用程序方法。