Quantos metodos podem ter uma interface funcional?

Boa tarde, estou fazendo um simulado para a certificação java 8 e me deparei com essa pergunta.

Nos exemplos que estou usando só permite 1 metodo na interface funcional.

Eu conifirmo isso colocando a anotação na interface @FunctionalInterface

Vejam:
@FunctionalInterface
interface Matcher{
boolean test(T t);
}

Se eu colocar 2 metodos o codigo nao compila:
@FunctionalInterface
interface Matcher{
boolean test(T t);
boolean pula();
}

Esse T maiúsculo é do tipo generics?
Se sim, precisa do diamante <>.

interface Matcher<T>{
boolean test(T t);
boolean pula();
}
Se não for generics, a classe T não foi criada ou não foi importada corretamente.

Não há um número mínimo de métodos, mas o ideal.
Normalmente são poucos.

Então, eu fiz o seguinte teste, coloquei a anotacao @FunctionalInterface em cima da interface conforme o exemplo acima, e nao permitiu mais que um metodo

Esse código não compila
@FunctionalInterface
interface Matcher <T> {
boolean test(T t);
boolean pula();
}

Esse código compila

Testei sem ser generic tambem nao compila

@FunctionalInterface
interface TesteIF {
	
	boolean test();
	
	boolean pula();

}

Boa amigo, se puder me exemplificar irá me ajudar e as outras pessoas nos estudos.

Eu tinha em mente as interfaces comuns.

Neste caso o erro é por causa da anotação que vc está usando.
Ela permite apenas um método abstrato.
Também podem conter um ou mais Default Methods.

O comportamento esta correto, uma interface funcional obrigatoriamente tem que ter apenas um método abstrato.
Caso você queira trabalhar com lambda nesse seu método, não é necessário anotar a interface com @FunctionalInterface, essa anotação apenas obriga a ter apenas um método abstrato.

Sobre o T citado nos posts anterior, se você não criou uma classe chamada T, você obrigatoriamente deveria explicitar o tipo generico na assinatura do método ou da interface (esse o amigo acima ja fez)

Ex método:

<T> boolean test(T t);

Mike, muito obrigado pela ajuda.

A minha duvida gira em torno de possibilidade de ter mais de um metodo na interface funcional. E você confirma na sua resposta.
Veja comprei um simulado que a resposta correta diz ao contrário, por isso fiquei com bastante dúvida sobre isso.

Quanto ao generico, faz parte de um trecho de estudo de um treinamento do Alura.

Desde já agradeço vossa atenção.

Muito obrigado

Disponha!

O simulado ta dizendo que só pode ter 1 método?

Qualquer dúvida, só postar.

Se a interface possuir 1 método abstrato e no mínimo 1 método default, vc teria 2 métodos.
Neste sentido a afirmativa III estaria correta e as demais erradas.
Abstrato ou default, ambos são métodos.

Uma interface funcional é uma interface que contém somente um método abstrato.
A partir do Java 8, expressões lâmbda podem ser utilizadas para representar a instância de uma interface funcional.
Uma interface funcional pode ter qualquer quantidade de métodos default.

2 curtidas

Opa, mais uma coisa nova… podemos incluir metodos default, legal…

Obrigado, vou fazer uns testes aqui.