【问题标题】:java - sending variables through nested classesjava - 通过嵌套类发送变量
【发布时间】:2018-10-02 18:21:29
【问题描述】:

我有一个具有Name 类型变量的类。

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

Name 类有两个名为 firstlast 的字符串,它们由 setter 方法分配值。我想将 Name 类中的字符串发送到 Holder 类中的名称,但我在这样做时遇到了麻烦。我认为我这样做已经朝着正确的方向迈出了一步

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

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

但我不能说我真的知道正确的方法是什么。我也试过name.setFirst(getFirst),但这不起作用。任何想法将不胜感激。

【问题讨论】:

  • 你能提供一些你正在尝试做的事情的背景吗?真实情况。
  • 你能告诉我们类Name的定义吗?

标签: java class inner-classes


【解决方案1】:

如果类没有嵌套,则方法相同。

您的 setName() 方法应该接受一个参数(可能是 2,第一个和最后一个),然后调用 name.setFirstName()、name.setLastName() 方法。

现在,您的 setName() 方法没有做任何事情。

例如:

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

【讨论】:

  • NullPointerException。或许你应该先创建一个Name 对象。
  • @dustytrash 我实际上从未见过这个。之前,但我会看看我能不能从这里弄清楚。
  • @dustytrash this.name.setFirst(firstname) 不会只是将值发送回 Name 类中的 setFirst 方法吗?
  • @dustytrash 我要多读一点,稍后再试。感谢您的宝贵时间。
【解决方案2】:

这里有一篇很好的文章解释了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”“Inner_Demo (outer.new Inner_Demo();) 的实例。

【讨论】:

  • 它是一个内部类吗?问题中的示例仅显示了 Name 类型的常规字段,并没有显示 Name 是内部类。
  • 问题是“通过嵌套类发送变量”。 tutorialspoint article 有助于回答这个问题......并且还讨论了几个相互关联的问题。我鼓励 OP 阅读它。是的,OP 的示例可能根本不涉及嵌套类。更有理由阅读这篇文章;)
【解决方案3】:

好的,所以我想出了一些可行的方法。

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

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

【讨论】:

  • 问题:“类似于 '@53a68791' ...当我尝试从数组插槽打印它时。一种解决方案:为您要打印的类覆盖 toString()(例如“名称” ). PS:您是否阅读过有关“嵌套类”的文章。是否您碰巧使用了任何“内部类”?
  • @paulsm4 我真的应该立即意识到的另一个解决方案是专门从名称中获取名字或姓氏。我阅读了这篇文章,是的,我正在使用嵌套类。 holder 和 name 只是一大类类中的两个部分,如果我没记错的话,这些类将被一个类访问。
  • “嵌套类”的意思是“一个类在另一个类的定义中定义”。您的可能会或可能不会使用“嵌套类”;到目前为止,您显示的代码 NOT 有任何代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-24
  • 1970-01-01
  • 2017-04-24
  • 1970-01-01
  • 2017-05-19
  • 1970-01-01
相关资源
最近更新 更多