Не удается получить доступ к объектной переменной из метода класса (Java)

#java

#java

Вопрос:

Домашнее задание требует от меня создания структуры данных пакета на Java путем реализации java.util.Коллекции. Данные пакета должны храниться в массиве. Кажется, я не могу получить доступ к методам моего класса для доступа к массиву, который я предоставляю каждому объекту в классе.

Вот код, вызывающий у меня проблему:

 import java.util.*;
import java.lang.*;

class Bag<T> implements Collection<T> {

//MAIN METHOD///////////////////////////////

public static void main(String[] args) {

Bag<Integer> bravo = new Bag<Integer>();

System.out.println(bravo.size());

}///////////////////////////////////////////


//CONSTUCTOR///////////////////////////
public Bag() {

T[] bagarray = (T[])new Object[10];

}
///////////////////////////////////////


//METHODS/////////////////////////////////////////////////////////////////////////////////

public int size() {

int temp;

temp = bagarray.length;

return temp;

}
  

Во время компиляции мне выдается ошибка cannotfindsymbol для bagarray. Тем не менее, я написал код, прежде чем выполнять этот точно такой же маневр.

Это должна быть какая-то мелкая деталь, но я некоторое время ломал голову над этой проблемой. Где я ошибаюсь?

Ответ №1:

Массив должен быть переменной экземпляра; в настоящее время он является локальным в конструкторе.

Комментарии:

1. Большое вам спасибо; после просмотра моей предыдущей программы ваше предложение было точной проблемой.

Ответ №2:

Объявление локальной переменной:

 //CONSTUCTOR///////////////////////////
public Bag() {

T[] bagarray = (T[])new Object[10];

}
  

Объявление переменной-члена:

 T[] bagarray;
//CONSTUCTOR///////////////////////////
public Bag() {

bagarray = (T[])new Object[10];

}
  

Вы хотите последнее из двух.