interface IBase {
void doJob();
}
public class MyCache<T extends IBase> {
private T t1;
private T t2;
public MyCache(T t1, T t2) {
this.t1 = t1;
this.t2 = t2;
}
@PostConstruct
private void init() {
t1.update();
t2 = t1.clone(); // ERROR!
}
}
如您所見,我正在嘗試開發一個通用類。在函式init()中,我將 的副本分配t1給t2。但是不能編譯。
我不太擅長Java。有人可以幫我解決這個問題嗎?
uj5u.com熱心網友回復:
查看合同public Object clone(),因此要在您的類中使用此方法,您應該將其宣告Object為T.
interface IBase extends Cloneable {
void doJob();
void update();
Object clone();
}
public class MyCache<T extends IBase> {
private T t1;
private T t2;
public MyCache(T t1, T t2) {
this.t1 = t1;
this.t2 = t2;
}
private void init() {
t1.update();
t2 = (T)t1.clone();
}
}
PS這是可行的解決方案,但目前已過時。最好改用復制建構式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/523368.html
標籤:爪哇仿制药
上一篇:無法覆寫接受泛型內部類引數的方法
下一篇:檢查Rust中某些屬性的常量泛型
