Java - отправка переменных через вложенные классы - PullRequest
0 голосов
/ 02 октября 2018

У меня есть класс с переменной типа Name.

public class Holder {
   private Name name;
   private int snumber;

. В классе Name есть две строки с именами first и last, которым присваиваются значения с помощью методов установки.Я хотел бы переслать строки из класса Name для указания имени в классе Holder, но у меня возникают проблемы при этом.Я думаю, что сделал шаг в правильном направлении, сделав это

public class Holder {
   private Name name;
   private int snumber;

   public void setName(){
      name = new Name();
      name.getFirst();
      name.getLast();
   }

, но я не могу сказать, что действительно знаю, что такое правильный подход.Я также пытался name.setFirst(getFirst), но это не работает.Любые идеи будут оценены.

Ответы [ 3 ]

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

Вот хорошая статья, объясняющая взаимосвязь между внутренним и внешним классами Java:

https://www.tutorialspoint.com/java/java_innerclasses.htm

class Outer_Demo {
   // private variable of the outer class
   private int num = 175;  

   // inner class
   public class Inner_Demo {
      public int getNum() {
         System.out.println("This is the getnum method of the inner class");
         return num;
      }
   }
}

public class My_class2 {

   public static void main(String args[]) {
      // Instantiating the outer class
      Outer_Demo outer = new Outer_Demo();

      // Instantiating the inner class
      Outer_Demo.Inner_Demo inner = outer.new Inner_Demo();
      System.out.println(inner.getNum());
   }
}

Обратите внимание, что в примере создаются экземпляры как "Outer_Demo" AND"Inner_Demo (outer.new Inner_Demo();).

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

Хорошо, я понял, что это работает.

public class Holder {
  private int snumber;
  private Name name;

 public void setName(Name n){
  name=n;
  }
 public Name getName(){
  return name;
}
0 голосов
/ 02 октября 2018

Так же, как если бы класс не был вложенным.

Ваш метод setName () должен принять параметр (возможно, 2, первый и последний), а затем вызвать методы name.setFirstName (), name.setLastName ().

Прямо сейчас, вашМетод setName () ничего не делает.

EG:

public class Holder
{
   private Name name;
   private int snumber;

   public Holder()
   {
       this.name = new Name();
   }

   public void setName(String firstName, String lastName)
   {
      this.name.setFirst(firstName);
      this.name.setLAst(lastName);
   }
}
...