如何将值从一个构造函数传递给另一个构造函数?

时间:2018-11-13 17:17:27

标签: java constructor

我正在使用Java。我有一个带有2个构造函数的类。第一个构造函数将int值用作参数,并将int变量设置为该值。第二个构造函数获取一个字符串并打印出来。这个想法是,当我从主类调用第一个构造函数时,它会设置一个整数值。当我在主类中调用第二个构造函数时,它将采用第一个构造函数的int变量的字符串表示形式并将其打印出来。

这是我制作构造函数的方式:

public class Test
{
   int val;

   public Test(int x)
   {
      val = x;
      return val; //I know this won't work. So I'm looking for an alternative
   }

   public Test(String y)
   {
      System.out.println("The value is " + y);
   }
}

main方法(在另一个类中)如下所示:

public static void main(String [] args)
    {
        Test t1 = new Test(6);
        Test t2 = new Test(String.valueOf(t1)); //This won't work because the first constructor can't return a value
    }

那么我到底如何更改构造函数的内容,以便可以将 val 传递给第二个构造函数?

5 个答案:

答案 0 :(得分:2)

覆盖toString()以返回值,因此当您String.valueOf(t1)这样做时,它将执行toString()方法;

public class Test
{
   int val;

   public Test(int x)
   {
      val = x;  
   }

   public Test(String y)
   {
      System.out.println("The value is " + y);
   }

   @Override
   public String toString()
   {
      return String.valueOf(val);
   }
}

答案 1 :(得分:1)

我认为您可能实际上想做的是重写toString()的{​​{1}}方法。

Test

然后您可以执行以下操作:

public class Test
{
   int val;

   public Test(int x)
   {
      val = x;
   }

   @Override
   public String toString() {
       return "Test:"+val;
   }
}

答案 2 :(得分:0)

您所描述的内容实际上是不可能进行一些更改的。

首先,t1t2是两个单独的实例,它们内部的值彼此无关。因此t1具有x=6,而t2具有x=0(由于默认值)。

如果您希望第二个构造函数的值x 不是 0,那么您也需要在 中传递该值。

public Test(int x, String s) {
    super(x);
    System.out.println(x);
}

答案 3 :(得分:0)

我认为您真的不需要两个构造函数。似乎您想执行以下操作:

for (int i = 0; i < 6; i++) {
   findViewById(groupSong2[i]).setVisibility(View.INVISIBLE)
}

答案 4 :(得分:0)

您的要求有点奇怪。但这会起作用,即使有点奇怪

DividerItemDecoration dividerDecoration = new DividerItemDecoration(
  recyclerView.getContext(),
  layoutManager.getOrientation());
recyclerView.addItemDecoration(dividerDecoration);