I assume there is some way to specify the SAM type explicitly, for cases where it can't be inferred properly?
As to your second question, yes, you can cast a lambda to explicitly specify it's target SAM type:
obj.method((Runnable)(()=> println("oh hai !")));
As to your second question, yes, you can cast a lambda to explicitly specify it's target SAM type: