Java 8 : Lambda Function and Generic Wildcards -
i have following class
class book implement borrowable { @override public string tostring(function<? extends borrowable , string> format) { return format.apply(this); } } this gives me error cannot use "apply" on this(book object).
my current formatter
function<book, string> regular_format = book -> "name='" + book.name + '\'' + ", author='" + book.author + '\'' + ", year=" + book.year; i don't want make lambda function of type
function<borrowable, string> as lose access members of book not exposed borrowable.
the function<? extends borrowable, string> type means function able accept some type extends borrowable. not mean accepts book. best solution introduce generic parameter borrowable:
public interface borrowable<t> { public string tostring(function<? super t, string> format); } and specify in book:
public class book implements borrowable<book> { @override public string tostring(function<? super book, string> format) { return format.apply(this); } } it's similar how comparable interface works.
Comments
Post a Comment