LINUX.ORG.RU

История изменений

Исправление Legioner, (текущая версия) :

Я так понимаю, package - это и есть модуль?

Модуль это файл. package это логически связанные модули. Ну и импорты можно не писать, если классы в одном пакете.

Тогда это пример как раз решения циклических ссылок в рамках одного модуля. Интерфейс состоит из трёх классов A,B,Test. А когда из станет не 3, а 303, будет несколько неудобно работать с таким пакетом. Вот я и хочу разбить 303 на 150 и 153. 150 в парсере оператора и 153 в парсере выражения.

Можно разместить эти классы в разных пакетах, всё будет работать точно так же.

// a/A.java
package a;

import b.B;

public class A {
    public B b;

    public int f(int x) {
        return b.f(x);
    }
}

// b/B.java
package b;

import a.A;

public class B {
    public A a;

    public int f(int x) {
        return x == 0 ? 1 : x * a.f(x - 1);
    }
}

// test/Main.java
package test;

import a.A;
import b.B;

public class Test {
    public static void main(String[] args) {
        A a = new A();
        B b = new B();
        a.b = b;
        b.a = a;
        System.out.println(a.f(5));
    }
}

Исходная версия Legioner, :

Я так понимаю, package - это и есть модуль?

Модуль это файл. package это логически связанные модули. Ну и импорты можно не писать, если классы в одном пакете.

Тогда это пример как раз решения циклических ссылок в рамках одного модуля. Интерфейс состоит из трёх классов A,B,Test. А когда из станет не 3, а 303, будет несколько неудобно работать с таким пакетом. Вот я и хочу разбить 303 на 150 и 153. 150 в парсере оператора и 153 в парсере выражения.

Можно разместить эти классы в разных пакетах, всё будет работать точно так же.