我正在使用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 传递给第二个构造函数?
答案 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)
您所描述的内容实际上是不可能进行一些更改的。
首先,t1
和t2
是两个单独的实例,它们内部的值彼此无关。因此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);