我对java有一个很普遍的问题。 我想知道是否有一种简单的方法可以在java中重新创建这个c ++代码:
class A
{
public:
int first;
int second;
A(const A& other) {
*this = other;
}
...
}
所以基本上是一个复制构造函数,你可以在构造函数中传递A的一个新对象的现有对象,它将复制内容并构建A的现有对象的精确副本。
试图
class A {
int first;
int second;
public A(A other){
this = other;
}
...
}
遗憾的是,没有工作,因为日食告诉我"这个"在作业的左侧不允许使用,因为它不是变量。
我知道我会做同样的结果:
class A {
int first;
int second;
public A(A other){
this.first = other.first;
this.second = other.second;
}
...
}
但我想知道是否有更简单的方法,因为有时你会有更多的类变量。
提前致谢!
答案 0 :(得分:1)
你在该类的第三个版本中所拥有的是与你的C ++类完全相同的合法java,但我认为没有比你所写的更简单的方法。
答案 1 :(得分:1)
回收代码的最佳方式:
class A {
int first;
int second;
public A(int f, int s){
this.first = f;
this.second = s;
}
public A(A a){
this(a.first, a.second); // id use getters instead ofc.
}
}
答案 2 :(得分:1)
Java语言没有更简单的方法,但是有一些棘手的技术可以让你这样做:
Serializable
的类据我所知,直接映射后最有效的方法是通过序列化机制。