我有一个这样的课程:
public class Reza {
public Reza(Reza reza) {
}
}
我想将构造函数的输入参数的reza替换为当前对象:
this = reza
我该怎么办? 有可能吗?
答案 0 :(得分:3)
不,这是不可能的。 this
和reza
代表不同的对象;你不能用现有的构造函数替换在构造函数中创建的对象。
但是,您可以将<{1}}的内容复制到reza
。为此,添加一系列分配如下:
this
答案 1 :(得分:1)
不可能,但您可以逐个复制所有属性(如其他答案)或反射。 这样的东西,希望你有你想要复制的属性的getter和setter(我从另一个stackoverflow答案复制它,看起来是正确的):
public Reza(Reza reza) {
Method[] gettersAndSetters = reza.getClass().getMethods();
for (int i = 0; i < gettersAndSetters.length; i++) {
String methodName = gettersAndSetters[i].getName();
try{
if(methodName.startsWith("get")){
this.getClass().getMethod(methodName.replaceFirst("get", "set") , gettersAndSetters[i].getReturnType() ).invoke(this, gettersAndSetters[i].invoke(reza, null));
}else if(methodName.startsWith("is") ){
this.getClass().getMethod(methodName.replaceFirst("is", "set") , gettersAndSetters[i].getReturnType() ).invoke(this, gettersAndSetters[i].invoke(reza, null));
}
}catch (NoSuchMethodException e) {
// TODO: handle exception
}catch (IllegalArgumentException e) {
// TODO: handle exception
}
}
}
答案 2 :(得分:0)
不,你不能这样做。根据设计,this
是一个只读常量。分配给它没有任何意义。