import java.util.function.Predicate;

class Applicant {
  public boolean isCredible() {
    return true;    
  }                            
  
  public int getCreditScore() {
    return 700;
  }
  
  public int getEmploymentYears() {
    return 10;
  }
  
  public boolean hasCriminalRecord() {
    return true;
  }
}                  

class Sample {          
  public static void evaluate(
    Applicant applicant, Predicate<Applicant> evaluator) {
      
    String result = 
      applicant.isCredible() && evaluator.test(applicant) ?
        "accepted" : "rejected";
        
    System.out.println("Result of evaluating applicant: " + result);
  } 
  
  public static void main(String[] args) {
    Applicant applicant = new Applicant();
                               
    Predicate<Applicant> creditCheck = 
      theApplicant -> theApplicant.getCreditScore() > 600;      
    Predicate<Applicant> employmentCheck =
      theApplicant -> theApplicant.getEmploymentYears() > 0;
    Predicate<Applicant> crimeCheck =
      theApplicant -> !theApplicant.hasCriminalRecord();
    
    evaluate(applicant, creditCheck);
    
    evaluate(applicant, creditCheck.and(employmentCheck));
    
    evaluate(applicant, crimeCheck.and(employmentCheck));
    
    evaluate(applicant, crimeCheck.and(creditCheck).and(employmentCheck));
  }              
}
import java.util.function.Predicate;

class Requerente {
	public boolean isConfiavel() {
		return true;
	}

	public int getPontuacaoDeCredito() {
		return 700;
	}

	public int getAnosDeTrabalho() {
		return 10;
	}

	public boolean hasRegistroCriminal() {
		return true;
	}
}

class Sample {
	public static void avaliar(Requerente requerente, Predicate<Requerente> avaliador) {
		String result = requerente.isConfiavel() && 
				avaliador.test(requerente) 
				? "accepted" : "rejected";

		System.out.println("Resultado da Avaliação do Requerente: " + result);
	}

	public static void main(String[] args) {
		Requerente requerente = new Requerente();

		final Predicate<Requerente> creditCheck = 
				onRequerente -> onRequerente.getPontuacaoDeCredito() > 600;

		final Predicate<Requerente> employmentCheck = 
				onRequerente -> onRequerente.getAnosDeTrabalho() > 0;

		final Predicate<Requerente> crimeCheck = 
				onRequerente -> !onRequerente.hasRegistroCriminal();

		avaliar(requerente, creditCheck);

		avaliar(requerente, creditCheck.and(employmentCheck));

		avaliar(requerente, crimeCheck.and(employmentCheck));

		avaliar(requerente, crimeCheck.and(creditCheck).and(employmentCheck));
	}
}
Fix translate to pt_BR