[英]Java copiable objects, similar to this Python example
So, here's what I can do in Python: 因此,这是我可以在Python中执行的操作:
class Copiable(object):
def copy_from(self, other):
""" This method must be implemented by subclasses to define their
own copy-behaviour. Never forget to call the super-method. """
pass
def copy(self):
""" Creates a new copy of the object the method is called with. """
instance = self.__new__(self.__class__)
instance.copy_from(self)
return instance
class Rectangle(Copiable):
def __init__(self, x, y, w, h):
super(Rectangle, self).__init__()
self.x = x
self.y = y
self.w = w
self.h = h
# Copiable
def copy_from(self, other):
self.x = other.x
self.y = other.y
self.w = other.w
self.h = other.h
super(Rectangle, self).copy_from(self)
There are two problems I'm facing in the Java version of it: 我在Java版本中面临两个问题:
__new__
method. 我不知道如何创建类似于Python的__new__
方法的类的实例。 Copiable
to be an interface, but then, I am unable to implement the clone()
method. 我希望将Copiable
接口,但是之后,我无法实现clone()
方法。 Can you think of a solution? 您能想到解决方案吗? Thanks 谢谢
Java uses new
keyword for constructing objects. Java使用new
关键字构造对象。 Creating a Copiable
interface should not interfere with clone()
method. 创建可Copiable
接口不应干扰clone()
方法。
public interface Copiable<T> {
public T copy();
public T copyFrom(T other);
}
public class Rectangle implements Copiable<Rectangle> {
private int x, y, w, h;
@Override
public Rectangle copy() {
return new Rectangle();
}
@Override
public Rectangle copyFrom(Rectangle other) {
return new Rectangle(other);
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public int getW() {
return w;
}
public int getH() {
return h;
}
public Rectangle() {}
public Rectangle(Rectangle other) {
this.x = other.getX();
this.y = other.getY();
this.w = other.getW();
this.h = other.getH();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.