I don't understand these complaints.

Here is a tiny interface that will do what you need:

    @FunctionalInterface
    public interface IPasswordChecker
    {
        bool isValid(String password);
    }
Now you can trivially declare a lambda that implements the interface.

Example:

    const IPasswordChecker passwordChecker = (String password) -> password.length() >= 16;

I'm personally rather fond of Java, but even this (or the shorter `Predicate`) still can't compete with the straightforward simplicity of a type along the lines of `string -> bool`.