Ciao a tutti.
Ho questo esempio schematico di applicazione. Una classe C1 che ha come variabile membro un'istanza della classe C2. In C1 c'è il metodo f1c1() che nella sua implementazione richiama un metodo di c2. Questo metodo di c2 si chiama f1c2 e ha come parametro un method reference ad un altro metodo di C1. L'applicazione funziona.
codice:
public class C1 implements nomeCasa{ 
    C2 c2; 
    public C1(C2 c) { 
        c2 = c; 
    } 
    public void f1c1() { 
        c2.f1c2(this::f2c1); 
    } 
    public String f2c1() { 
        return "Villa Maria"; 
    } 
}
codice:
public class C2 { 
 
    public void f1c2(nomeCasa n) { 
        String s = n.f2c1(); 
        System.out.println(s); 
    } 
}
codice:
@FunctionalInterface 
public interface nomeCasa { 
    String f2c1(); 
}
codice:
public class Main { 
 
    public static void main(String[] args) { 
        C2 c2 = new C2(); 
        C1 c1 = new C1(c2); 
        c2.f1c2(c1::f2c1); 
    } 
 
}
Secondo voi c'è un riferimento circolare tra C1 e C2? Potreste dirmi anche il perché?
Grazie.