Olá, gostaria de saber se é possível passar para uma variável uma função com retorno e esse retorno seja atribuído ao valor desta, por exemplo:
Suponhemos que eu tenha uma varíavel que vou chamar de num e ela recebe na frente uma função desta forma
int num = randomizaNumero()
essa função é declarada da seguinte maneira:
randomizaNumero() {
//parte da função que randomiza um número e armazena o valor em uma variável local chamada randNum
return randNum
}
logo quando eu declaro num da maneira descrita acima, num recebe o valor de randNum ou isso não ocorre?
O código acima é um pseudocódigo feito só pra tirar esta dúvida, fiz só para fins de demonstrar o que quis dizer mesmo
Em Java nós chamamos de método, não função. É só um detalhe, mas pode fazer a diferença na comunicação.
O exemplo que vc deu não é passar uma função para uma variável.
Você está simplesmente invocando o método e o valor retornado por ele está sendo atribuido à variável num e isso é possível sim. Experimente o código abaixo.
import java.util.Random;
public class Main {
public static void main(String... args) {
int num = randomizaNumero();
System.out.println(num);
}
static int randomizaNumero() {
return new Random().nextInt();
}
}
Em Java há duas formas de você alcançar algo próximo ao que descreveu, atribuir um método à uma variável.
import java.util.Random;
import java.util.function.Supplier;
public class Main {
public static void main(String... args) {
Supplier<Integer> num = () -> new Random().nextInt();
System.out.println(num.get());
}
}
import java.util.Random;
import java.util.function.Supplier;
public class Main {
public static void main(String... args) {
Supplier<Integer> num = Main::randomizaNumero;
System.out.println(num.get());
}
static int randomizaNumero() {
return new Random().nextInt();
}
}