Я использую generics в Java с несколькими классами. Я хочу найти способ уменьшить количество аргументов, которые мне нужно добавить.Уменьшение общих аргументов в Java
public abstract class KeyValueProducer<O,K,V> {
....
}
public class KeyValueProducerMapper<O,K,V,KVP extends KeyValueProducer<O,K,V>> {
public static <O,K,V,KVP extends KeyValueProducer<O,K,V>> KeyValueProducerMapper<O,K,V,KVP> create(Set<KVP> set) {
return new KeyValueProducerMapper(set);
}
public KeyValueProducerMapper(Set<KVP> kvps) {
...
}
public V getVal(K key) {
return map.get(key).getValue();
}
}
Когда я хочу сделать экземпляр моего KeyValueProducerMapper, похоже, мне нужно, чтобы написать:
Set<KVP> set;
....
KeyValueProducerMapper<K,V,O,KVP> kvpm = new KeyValueProducerMapper(set);
Это кажется отчасти долго и смешно. Есть ли способ, которым я могу просто так описать это?
KeyValueProducerMapper<KVP> kvpm = new KeyValueProducerMapper(set);
Ответ отрицательный, и вам, вероятно, придется пересмотреть свой дизайн, если вы чувствуете, что все не так. – DaveRlz
Лично я бы избегал использовать 'KVP' (возможно, использовал бы' P' вместо) в качестве одного из общих заменителей. В основном потому, что вы уже используете 'K' и' V' в качестве двух других заменителей (да, я знаю, что они разные, и что они в какой-то мере связаны друг с другом), но я просто чувствую, что этот трехбуквенный код делает что-то еще «). –