Функция отображения является в значительной степени копией стандартной функции отображения:
public <R> ObjStack<R> map(Function<T, R> mapping) {
return ObjStack.of(mapping.apply((T) current), history());
}
Где T
наследуется от сигнатуры класса ObjStack<T>
Использование
Function<Object, Integer> f = x -> x.hashCode();
в случае сбоя аргумента.
Object
определенно входит в область действия T
, и Integer
не должно иметь значения, поскольку это R
, который не ограничен.
someInstance.map(x -> x + 1)
также ошибки, someInstance
имеет тип ObjStack<Number>
. На данные ссылаются, используя внутренний тип Object
. Я использую и ограничен Java 8.
Редактировать:
Коды ошибок:
Error: line (7)
java: method map in class ObjStack<T> cannot be applied to given types;
required: java.util.function.Function<java.lang.Number,R>
found: java.util.function.Function<java.lang.Object,java.lang.Integer>
reason: cannot infer type-variable(s) R
(argument mismatch; java.util.function.Function<java.lang.Object,java.lang.Integer> cannot be converted to java.util.function.Function<java.lang.Number,R>)
Error: line (9)
java: bad operand types for binary operator '+'
first type: java.lang.Number
second type: int