Описание тега pecs
Аббревиатура java generics от "Producer (использует) Extends, Consumer (uses) Super"
1
ответ
PECS не работает на типах возвращаемых данных с интерфейсом
Рассмотрим следующий пример: class ClsA {} class ClsB {} interface IntA {} interface IntB {} И у меня есть 2 очень похожие методы: static <T extends ClsA> T returnC() { // Here T extends the class return null; } static <T extends IntA> T…
03 дек '15 в 11:35
2
ответа
PECS: Как преобразовать Потребителя в Производителя?
У меня есть ресторан, который производит еду. На кухне даны тарелки, которые являются Потребителями. class Food{} class Bamboo extends Food {} interface Kitchen { void build(List<? super Food> dessert); } abstract class Restaurant { Kitchen ki…
20 июл '17 в 10:42
1
ответ
Как я могу печатать для коллекции<? супер некоторые>?
У меня есть метод, похожий на этот. public void some(..., Collection<? super Some> collection) { // WOOT, PECS!!! final Stream<Some> stream = getStream(); stream.collect(toCollection(() -> collection)); } И как я могу сделать так, что…
13 июл '18 в 04:48
3
ответа
Дженерики Java PECS
Я знаю, что означает PECS. Продюсер продлевает,Consumer Super. дело в том, откуда мне знать, является ли он потребителем или производителем? Также этот код соответствует "PECS" public class Tree<T> { //List of branches for this tree private Li…
30 авг '12 в 13:13
1
ответ
Можно ли написать единственный метод, который принимает универсальный параметр различной абстракции?
В качестве продолжения этого вопроса можно ли написать один метод, который добавляет Dog в подходящую комнату? (В этом примере он будет принимать либо Animal комната или Dog комната.) Или я вынужден написать два разных метода, как показано ниже? (Я …
29 мар '12 в 16:20
1
ответ
Как убрать предупреждение "unchecked" из моего метода?
У меня есть следующий код private static class ParcelableParser<T> { private ArrayList<T> parse(List<Parcelable> parcelables) { ArrayList<T> parsedData = new ArrayList<T>(); for(Parcelable parcelable : parcelables) { pa…
17 окт '14 в 12:07
1
ответ
Java: Работа с универсальными элементами и картами без приведения / @SuppressWarnings
Теперь я сталкивался с этой проблемой несколько раз и всегда решал ее с помощью @SuppressWarnings аннотаций. Соответствующие интерфейсы / абстрактные классы: public abstract class Data { } public interface DataOperations { boolean isValid(); } publi…
24 июн '16 в 16:59
2
ответа
Ограниченный универсальный метод с типом 'super'
Согласно литературе, которую я прочитал, у нас есть сочные фрукты, реализующие следующий интерфейс: public interface Juicy<T> { Juice<T> squeeze(); } Используя переменные ограниченного типа, следующий метод собрал бы кучу фруктов и сжал …
07 май '13 в 17:14
5
ответов
Java Generics (ограниченные подстановочные знаки)
Согласно книге "Эффективная Java" Джошуа Блоха существует правило о том, как / когда использовать ограниченные символы подстановки в дженериках. Это правило PECS (Производитель-Расширяет, Comsumer-Super). Когда я изучаю следующий пример: Stack<Nu…
05 июн '13 в 11:11
1
ответ
Java сохраняет универсальный тип в карте верхней границы подстановочного знака
Начиная с этих классов public class Event { private EventType eventType; public EventType getEventType() { return eventType; } public void setEventType(EventType eventType) { this.eventType = eventType; } } public class OneEvent extends Event { publ…
15 окт '18 в 21:12
4
ответа
Почему добавление подкласса типа в коллекцию недопустимо?
Учитывая этот фрагмент кода //Creates a list of List numbers List<List<Number>> num = new ArrayList<List<Number>>(); //Creates a list of List doubles List<List<Double>> doub = new ArrayList<List<Double>&g…
30 авг '12 в 14:49
2
ответа
Как сделать так, чтобы потребитель более точного типа передавался как потребитель менее точного типа?
У меня есть следующие два функциональных интерфейса: IndexBytePairConsumer.java package me.theeninja.nativearrays.core; @FunctionalInterface public interface IndexBytePairConsumer { void accept(long index, byte value); } IndexIntPairConsumer.java pa…
12 дек '18 в 05:29
0
ответов
PECS параметризованный класс
У меня есть небольшой фрагмент кода, где я создал свою собственную реализацию java.util.stream. Мне нужно параметризовать его с помощью правила PECS. Но либо я плохо понимал правило PECS, либо мой класс плохо спроектирован - я не знаю, как правильно…
23 авг '16 в 15:12
3
ответа
Java, дженерики и PECS: все еще возникают проблемы с пониманием C-части; конкретный пример?
Я выложу одну ссылку здесь: Collections.sort(), На SO было много постов, касающихся парадигмы PECS, включая эту. В моем личном коде я довольно часто использую дженерики, но только когда-либо использовал P-часть (то есть <X extends SomethingElse&g…
19 июн '13 в 13:39
2
ответа
TreeSet.add() в Java не соответствует принципу PECS (Generics)
У меня есть следующий кусок кода: public interface Segment<T> extends Period { ... }; public class SegmentImpl_v1<T> implements Segment<T> { ... }; public interface TimeLine<T, S extends Segment<T>> { ... }; public clas…
04 ноя '11 в 23:39
18
ответов
Что такое PECS (продюсер продвигает Consumer Super)?
Я столкнулся с PECS (сокращение от производителя extends и потребитель super) пока читаю на дженерики. Может кто-нибудь объяснить мне, как использовать PECS для разрешения путаницы между extends а также super?
27 апр '10 в 17:16
3
ответа
Производитель и Потребитель с Дженериками в Java
У меня есть этот метод для извлечения объектов, которые являются экземпляром данного класса: public class UtilitiesClass { public static final Collection<Animal> get(Collection<Animal> animals, Class<? extends Animal> clazz) { // r…
26 фев '14 в 16:50
3
ответа
Преодоление дженериковых паттернов
Я читал об общих правилах get и put, которые должны помешать вам добавить Banana к List<? extends Fruit>: public abstract class Fruit { } public class Banana extends Fruit { } public class Apple extends Fruit { } List<? extends Fruit> ls…
01 апр '14 в 13:12
0
ответов
Компиляция не удалась, когда верхний предел подстановочный знак используется с нижним
Ситуация: я делаю библиотеку конфигурации с интерфейсом Config, который представляет данные, и интерфейсом парсера, подобным этому: public interface Parser<C extends D, D extends Config> { C parse(File f); void parse(File f, D destination); } …
14 июл '17 в 23:53
1
ответ
Когда использовать PECS при разработке библиотеки?
Я работаю над библиотекой, в которой интенсивно используются функциональные интерфейсы, и в настоящее время думаю, стоит ли применять PECS или нет: Predicate<A> Function<A,B> BiFunction<A,B,C> против Predicate<? super A> Func…
26 май '19 в 18:56