我有一个通用接口,我必须创建一个类来实现它。起初我认为这会很好,将它放在文档中,接口需要一个实现克隆方法的类
genericClass<E extends Cloneable> implements genericInterface<E extends Cloneable>{
E data;
//code
public E get(){
return this.data.clone()
}
}
然而这在实践中不起作用
package securedatacontainer;
public class Demo {
public static void main(String[] args) throws CloneNotSupportedException {
String s = "user";
A a = new A(5, s);
A b = a.clone();
System.out.println("a equals b: " +(a.equals(b)));
System.out.println("a == b: " + (a == b));
B<A> c = new B<>(a);
System.out.println("a equals c.data: " +(a.equals(c.data)));
System.out.println("a == c.data: " + (a == c.data));
A k = c.get();
System.out.println(k.value);
}
}
class A implements Cloneable{
int value;
String name;
public A(int x, String str ){
this.value = x;
this.name = str;
}
@Override
public A clone() throws CloneNotSupportedException {
A temp = new A(this.value, this.name);
return temp;
}
public boolean equals(A elem){
return (this.name).equals(elem.name) && this.value==elem.value;
}
}
class B <E extends Cloneable>{
E data;
public B(E elem){
this.data=elem;
}
public E get() throws CloneNotSupportedException{
return (E) this.data.clone();
}
}
我明白了
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: java.lang.Cloneable.clone
at securedatacontainer.B.get(Demo.java:60)
at securedatacontainer.Demo.main(Demo.java:19)
因为这个项目应该是一个数据存储,我真的怀疑我的老师想要一些通用 E 元素的浅拷贝(注意这只是一个简单的克隆测试程序,而不是实际项目)。谁能告诉我为什么这不起作用或如何使它起作用?我不能对输入的 E 元素做任何假设,只是它有自己的 clone() 方法
蓝山帝景
天涯尽头无女友
随时随地看视频慕课网APP
相关分类