Mapping function is pretty much a copy of standard mapping function:
public <R> ObjStack<R> map(Function<T, R> mapping) {
return ObjStack.of(mapping.apply((T) current), history());
}
Where T
is inherited from class signature ObjStack<T>
Using
Function<Object, Integer> f = x -> x.hashCode();
as argument fails.
Object
is definitely in scope of T
and Integer
shouldn't matter as it's R
which isn't constrained.
someInstance.map(x -> x + 1)
also errors, someInstance
is of type ObjStack<Number>
. Data is referenced using type Object
internally. I'm using and limited to Java 8.
Edit:
Error codes:
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