user10307826
user10307826

Reputation:

java - sending variables through nested classes

I have a class that has a variable of type Name.

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

The Name class has two strings called first and last that are assigned values by setter methods. I would like to send over the strings from the Name class to name in the Holder class, but I'm having trouble doing so. I think I've taken a step in the right direction by doing this

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

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

but I can't say that I really know what the correct approach is. I also tried name.setFirst(getFirst) but that doesn't work. Any ideas would be appreciated.

Upvotes: 2

Views: 627

Answers (3)

user10307826
user10307826

Reputation:

Ok, so I figured something out that works.

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

 public void setName(Name n){
  name=n;
  }
 public Name getName(){
  return name;
}

Upvotes: 0

paulsm4
paulsm4

Reputation: 121799

Here is a good article explaining the relationship between Java inner and outer classes:

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());
   }
}

Note that the example creates instances of both "Outer_Demo" AND "Inner_Demo (outer.new Inner_Demo();).

Upvotes: -1

dustytrash
dustytrash

Reputation: 1590

The same way you would if the class wasn't nested.

Your setName() method should take a parameter (maybe 2, first and last) and then invoke the name.setFirstName(), name.setLastName() methods.

Right now, your setName() method isn't doing anything.

E.G:

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);
   }
}

Upvotes: 1

Related Questions