Доступ к переменной в другом объекте того же класса

#java

#java

Вопрос:

Я пытаюсь получить доступ к массиву в объекте «other», но я не могу понять, как получить доступ к переменной. Это то, что у меня есть до сих пор:

 public void union(DataSet other)
{  
  DataSet temp = new newdataexp();
  temp = other; 
}
  

Я не смог выяснить, как получить доступ к переменной, даже когда я создаю метод в классе, который возвращает переменную, а затем пытаюсь вызвать его из этого объединения методов.

У меня есть этот метод, и я пытаюсь выполнить: String[][] temp = other.getdata(), но компилятор говорит, что он не может найти symbol: метод getdata().

общедоступная строка[][] getdata() {

возвращает filedata;

}

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

1. пожалуйста, прочитайте инструкцию Blocks ans

2. Создание метода, который возвращает это, должно было сработать. Вы должны были опубликовать эту попытку, и тогда мы могли бы объяснить, почему это не сработало.

3. Когда я попытался использовать метод, который вернул переменную, я получил сообщение об ошибке: не удается найти символьный метод data().

4. Опять же, я не понимаю, почему это не сработало бы. Уверен, что это тот же файл? Уверен, что оба раза она написана с заглавной буквы?

Ответ №1:

замените тип данных на String, int и т.д. Для всего, что возвращает метод.

 datatype mynewdata = (datatype)other.getMeMyArray();
  

Ответ №2:

Я не знаю, хорошо ли я понимаю ваш вопрос, но для доступа к переменной в другом объекте того же класса просто попробуйте это:

 class MyClass {
   private int[] myArray = new int[10];

   public void myMethod(MyClass myClass) {
       // you can in this way:
       // int[] tempArray = myClass.myArray 
       // but this is better:
       int[] tempArray = myClass.getMyArray();
   }

   public int[] getMyArray() {
       return myArray;
   }

}
  

Отредактировано:

Но если вы хотите улучшить объединение, извлеките метод объединения за пределы класса, создайте метод:

 public static MyObject union(MyObject myObjectFirst, MyObject myObjectSecond) {
   ...
}
  

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

1. Это сбивает с толку, потому что вы создаете объект и называете его «MyClass». Новички часто путают классы и объекты, поэтому я бы не стал делать этого в примере кода для начинающих.

2. общедоступная строка[][] data() { возвращает это. filedata; } — это то, что у меня было, я подумал, что это просто вернет переменную из объекта класса, который я хотел. Однако это не работает.

3. @John Я предполагаю, что это потому, что у вас есть метод getdata в классе newdataexp, но у вас есть в методе параметра ссылка на DataSet (обратите внимание: у вас нет такого метода в DataSet).

4. Вот и все, спасибо! Этого не было в интерфейсе, который я использовал.

5. @smas откуда ты это знаешь? Ты сидишь рядом с Джоном?