我有一个名为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 表示字符串类型。现在我在 B 类中有一个名为 length()
的方法。我希望这是可能的。
ClassA_VariableName.length()
然后我将能够得到对象的长度。类 B 类似于函数或特性的集合,可以附加到要附加到的任何类型。
简短的回答是否定的,如果不使用引入声明该方法的新类型(类或接口(,则无法在 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()
在Java中,你不能向类添加方法,这些类的源代码不能像javascript或ruby那样改变。
你可以创建自己的类并从 ArrayList 继承它:
class MyList extends ArrayList {
public int count() {
//...
}
}