我有一个名为CountService的类。它有这个方法
public int count()
我想要的是将此函数附加到任何java.util.List
变量,它将返回该列表的大小(整数)。我知道该列表有一个size()
方法。如果可以将方法附加到类中,我只是测试它。我不知道它到底在哪里。
样品:
java.util.List<String> list;
list.count();
所以即使count不属于java.util.List,我希望在我的代码中可以实现。有什么办法吗?
编辑:
它不仅仅适用于java.util.List。而不是任何类。我们说我有Class A
和Class B
现在举例来说,A类代表一种String类型。现在我在B类中有一个名为length()
的方法。我希望这是可能的。
ClassA_VariableName.length()
然后我就可以获得物体的长度。 B类就像是一系列功能或特征,可以附加到任何附加的类型上。
答案 0 :(得分:2)
简短的回答是否定的,如果不引入声明该方法的新类型(类或接口),则无法在Java中执行此操作。
您必须延长java.util.List
public interface SuperList extends List {
default int count() {
return size();
}
}
然后你必须引入一个实现该接口的新类(并且可能从现有的JDK列表中继承东西,例如ArrayList)。
但是,如果您不仅限于Java,您可以查看其他JVM语言。例如,Groovy或Kotlin提供了向类添加方法的功能。
以下是Groovy中的一个示例,它使用Expando类将方法添加到列表中。
List list = new ArrayList()
list.metaClass.count() {
delegate.size()
}
// now call it
list.count()
答案 1 :(得分:0)
在Java中,您不能将方法添加到与javascript或ruby不同的无法更改的源类。
您可以创建自己的类并从ArrayList:
继承它class MyList extends ArrayList {
public int count() {
//...
}
}