и наоборот. Исходя из собственного опыта - я бы это рефакторил.

код является примером круговой зависимости?

package expr;
import sheet.Sheet
public class AdressExpr implements Expr
{
    private Address address; 
    private Sheet sheet; 
    public double value(Sheet sheet)
    {
        return sheet.value(address);
    }
}
public interface Expr
{
    public double value(Sheet sheet);
}
public class Adress
{
    // omissions
}

package sheet; 
import expr.Address; 
import expr.Expr;

public class Sheet implements SuperSheet
{
    private Map <Address, Expr> map; 
    public double value(Address address)
    {
    return map.get(Address).value(this);
    }
}
public interface SuperSheet
{
    public double value(Address address);
}

Я знаю, что пример - плохое программирование, но разве интерфейс не запрещает циклическую зависимость из-за метода значений?

Ответы на вопрос(3)

Ваш ответ на вопрос