可以从另一个类操作来自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()函数中)?
编辑:不是重复
我没有要求从类中调用方法,而是在不扩展该类的情况下更改它。
答案 0 :(得分:2)
您正在寻找的是mixin,不,它在Java中不可用。
在Java中,这个问题通过使用继承来解决(虽然有些冗长,但确实很有意义)。
理论上它是possible to add a method dynamically而没有直接定义一个新类,但它对于任务来说真的很复杂和过度。
只需扩展类或定义实用程序方法。