К сожалению, это невозможно, так как вы написали это на Java.Если вам нужен этот эффект, у вас есть несколько вариантов:
Если вы пытаетесь оптимизировать для определенного вида коллекции, вы можете использовать проверку instanceof
для его обнаружения.(Например, библиотеки Guava часто делают это, чтобы обнаружить неизменяемые коллекции и обрабатывать их специально.)
Если вам действительно нужна одна коллекция для заполнения, вы можете попросить вызывающую сторону предоставить вам одну.
public <C extends Collection<NodeInfo>> void setNodes(C nodes, C newNodes) {
for (NodeInfo ni : nodes) {
newNodes.add(ni);
}
}
Если вам нужна возможность создавать произвольное количество этих коллекций по требованию, то вы можете определить фабричный интерфейс и заставить вызывающего пользователя предоставить его экземпляр:
interface Factory<C extends Collection<NodeInfo>> {
C newCollection();
}
public <C extends Collection<NodeInfo>> void setNodes(C nodes, Factory<C> factory) {
C newNodes = factory.newCollection();
for (NodeInfo ni : nodes) {
newNodes.add(ni);
}
}