Сеттер и геттер для Java 2d длины массива - PullRequest
0 голосов
/ 24 октября 2018

Я сделал структурированный код Java-проекта, который включает в себя 2d-массив, и теперь я пытаюсь сделать мой код ориентированным на объект.Я пытаюсь получить доступ к длине массива 2d, но я борюсь.

У меня было это для моего структурированного кода:

private static char[][] environment = new char[0][];

и я продолжал использовать environment.length; внутри методов

, но когда я пытаюсь переключиться на ООП, у меня возникают проблемы с доступом к длине среды в разных классах.Я использую набор и получаю вот так:

 public static char[][] getEnvironment() {
        return environment;
    }

    public static void setEnvironment(char[][] environment) {
        MyClass.environment = environment;
    }

, а затем получаю доступ к длине, как это:

MyClass.getEnvironment().length

Это разрешено?Есть ли другой способ сделать это?У меня также возникают проблемы, когда у меня есть вход для массива 2d.

Я использую это в структурированной версии:

if ( y<= environment[y].length - 1)

Могу ли я сделать это в ООП:

if (y<= MyClass.getEnvironment().length - 1)

Я не знаю, как включить y в приведенный выше код.

1 Ответ

0 голосов
/ 24 октября 2018

Я думаю, что вам нужно создать методы, которые заменят вашу оригинальную логику.

Если вы используете метод длины на вашем char[][], например,

if (y <= environment[y].lenght - 1)

вы можете инкапсулировать поведение для повторного использования примерно так:

public static int getEnvironmentLengthAt(int y) { return environment[y].length; }

Я думаю MyClass.getEnvironment().length, вероятно, не сработает, потому что вы пытаетесьчтобы вернуть длину двумерного массива, и вы сравниваете конкретную строку в этом двумерном массиве.

Без большего контекста что-то вроде MyClass.getEnvironment(y).lenght может работать лучше для вас, но вы 'Я должен иметь объявление метода, подобное этому,

public static char[] getEnvironment(int y){ return environment[y]; }

, чтобы поддержать вышеуказанный вызов метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...