Because of inheritance, a leaf-class has to have a Function<T, R>
which it uses as a Supplier<R>
. (Ignore the passed parameter)
What is the best way to convey that the generic parameter type is not used and that null should get passed?
CodePudding user response:
To convey the notion that some variable, return type, parameter etc. can only be null
the type Void
can be used - there's only one valid value for this: null
.
So in your case you could use Function<Void, R>
to indicate apply(null)
will always be called, so the function needs to be mapped to a supplier of sorts.
In general you'd want to use Supplier<R>
instead but in cases where Function
is required this could be an option.
The same would be true for consumers that would need to be represented as functions: use Function<T, Void>
in those cases and return null
.
CodePudding user response:
Use java.lang.Void
The Void class is an uninstantiable placeholder class to hold a reference to the Class object representing the Java keyword void.
It can't be instantiated, so only null
can be passed as parameter.
class SomeClass implement Function<Void, YourResultClass> {
//implement apply
}