Ho sempre sentito parlare di come Java non supporta le funzioni di prima classe, che è un vantaggio che si ottiene dai linguaggi funzionali, l'unico modo per simularlo in Java è attraverso l'uso di classi interne anonime ecc.
Tuttavia, da quello che posso vedere Java supporta le prime funzioni attraverso l'uso della sua reflection API. Ad esempio, posso creare un oggetto metodo da una classe e quindi chiamarlo su un numero di oggetti di quella classe. Mi rendo conto che non è potente come le funzioni di prima classe in altre lingue. Ad esempio in Python puoi fare quanto segue:
class Test:
def __init__(self, num):
self.number = num
def add(self, num):
self.number += num
test = Test(1)
method = test.add
method(2)
Non è possibile farlo in Java perché è necessario avere un riferimento all'oggetto su cui si desidera richiamare il metodo. Tuttavia puoi ancora trattare il metodo come un oggetto che è ciò che definisce le funzioni di prima classe. Immagino che l'oggetto metodo non sia realmente la funzione reale, ma piuttosto un oggetto meta-dati, anche se usando la riflessione può essere trattato come tale. Forse ho solo bisogno di chiarimenti su cosa definisce una funzione di prima classe.