/** * Adds an upper bound to this generic. * <p> * In the following example, <code>List<String></code> and * <code>Serializable</code> are upper bounds: * <pre> * T extends List<String>&Serializable * </pre> * * @param upperBound the new upper bound * @return a reference to this model */ default Generic add(Type upperBound) { getUpperBounds().add(upperBound); return this; }
/** * Copy constructor. * * @param prototype the prototype */ protected GenericImpl(Generic prototype) { lowerBound = prototype.getLowerBound().orElse(null); upperBounds = new ArrayList<>(prototype.getUpperBounds()); }
@Override public Optional<String> transform(Generator gen, Generic model) { requireNonNulls(gen, model); if (!model.getLowerBound().isPresent() && model.getUpperBounds().isEmpty()) { return Optional.empty(); } else { return Optional.of( model.getLowerBound().orElse("") + gen.onEach(model.getUpperBounds()).collect(joinIfNotEmpty("&", model.getLowerBound().isPresent() ? model.getBoundType() == Generic.BoundType.EXTENDS ? " extends " : " super " : "", "" ) ) ); } } }
g.getUpperBounds().forEach(ub -> addType(ub, types)
/** * Adds an upper bound to this generic. * <p> * In the following example, <code>List<String></code> and * <code>Serializable</code> are upper bounds: * <pre> * T extends List<String>&Serializable * </pre> * * @param upperBound the new upper bound * @return a reference to this model */ default Generic add(Type upperBound) { getUpperBounds().add(upperBound); return this; }
/** * Adds an upper bound to this generic. * <p> * In the following example, <code>List<String></code> and * <code>Serializable</code> are upper bounds: * <pre> * T extends List<String>&Serializable * </pre> * * @param upperBound the new upper bound * @return a reference to this model */ default Generic add(Type upperBound) { getUpperBounds().add(upperBound); return this; }
/** * Copy constructor. * * @param prototype the prototype */ protected GenericImpl(Generic prototype) { lowerBound = prototype.getLowerBound().orElse(null); upperBounds = new ArrayList<>(prototype.getUpperBounds()); }
/** * Copy constructor. * * @param prototype the prototype */ protected GenericImpl(Generic prototype) { lowerBound = prototype.getLowerBound().orElse(null); upperBounds = new ArrayList<>(prototype.getUpperBounds()); }
@Override public Optional<String> transform(Generator gen, Generic model) { requireNonNulls(gen, model); if (!model.getLowerBound().isPresent() && model.getUpperBounds().isEmpty()) { return Optional.empty(); } else { return Optional.of( model.getLowerBound().orElse("") + gen.onEach(model.getUpperBounds()).collect(joinIfNotEmpty("&", model.getLowerBound().isPresent() ? model.getBoundType() == Generic.BoundType.EXTENDS ? " extends " : " super " : "", "" ) ) ); } } }
@Override public Optional<String> transform(Generator gen, Generic model) { requireNonNulls(gen, model); if (!model.getLowerBound().isPresent() && model.getUpperBounds().isEmpty()) { return Optional.empty(); } else { return Optional.of( model.getLowerBound().orElse("") + gen.onEach(model.getUpperBounds()).collect(joinIfNotEmpty("&", model.getLowerBound().isPresent() ? model.getBoundType() == Generic.BoundType.EXTENDS ? " extends " : " super " : "", "" ) ) ); } } }
g.getUpperBounds().forEach(ub -> addType(ub, types)
g.getUpperBounds().forEach(ub -> addType(ub, types)