Как использовать метод для ссылки на тип данных (массив), который создается в конструкторе - PullRequest
0 голосов
/ 28 сентября 2018

Извините за неправильный заголовок ... но у меня в настоящее время есть класс Array и его конструктор с простым методом getSize ().Конструктор создает массив, есть ли способ ссылаться на этот массив в методе, не передавая его как параметр?

//constructor
Array(int n) {
    int arr[] = new int[n];
}
//method
static int getSize(int index) {

    //how do I reference the created array?
    return index;

}

РЕШЕНО!СПАСИБО

Ответы [ 3 ]

0 голосов
/ 28 сентября 2018

Нельзя ссылаться на локальную переменную, объявленную в другом методе.

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

Кроме того, getSize не должно быть static, поскольку вы не можете ссылаться на член non-static в методе static.

private int arr[];

Array(int n) {
    arr[] = new int[n];
}

int getSize(int index) {
    //reference the array here
    return index;
}
0 голосов
/ 28 сентября 2018

Вы можете получить доступ только к статическим переменным в статическом методе.Чтобы получить доступ к массиву в этом методе, нужно либо сделать массив статическим членом, но затем инициализировать его в статическом блоке.

Другая вещь, которую вы можете сделать, это сделать метод нестатичным.Тогда вы сможете получить доступ к массиву внутри функции, не создавая экземпляр класса.

0 голосов
/ 28 сентября 2018

Почему бы не объявить массив как переменную класса?

int arr[];

//constructor
Array(int n) {
    arr = new int[n];
}
//method
int getSize(int index) {

    //how do I reference the created array?
    return index;

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