我可以強制基於方法實例變量的編譯錯誤嗎?考慮下面的示例類。java強制基於實例變量的方法參數對象類型
class MyObject{
Class targetClass;
public MyObject(Class<? extends Model> targetClass){
this.targetClass = targetClass;
}
public <T extends Model> void doSomething(T model){
//do some stuff
}
}
class Customer extends Model {}
class Document extends Model {}
難道我實例MyObject
與Customer.class
,然後有它拋出一個編譯錯誤,如果我再調用doSomething()
方法與Document.class
實例?
MyObject object = new MyObject(Customer.class);
//this shouldn't compile
object.doSomething(new Document());
//this would be able to compile
object.doSomething(new Customer());
編輯*
我試圖想出一個ORM的關係對象。我使用基本實例和目標類實例化對象。例如,我正在創建一個HasMany
關係對象。我將用Customer
實例和Document
類實例化對象。在我的HashMany
對象中,我有一個.get()
方法,它返回連接到Customer
實例的所有Documents
。我也有一個.attach(Model model)
方法,我會給它一個Document
實例,該方法會將Document
模型附加到數據庫中的Customer
模型。我想強制.attach(Model model)
方法只接受該對象實例化的類中的模型。在這種情況下,Document
類。
這聞起來像[在XY問題]的情況下(http://meta.stackexchange.com/questions/66377 /是什麼 - 是最XY-問題)。你究竟在努力完成什麼? –
@MattBall,我編輯了我的OP,更多信息 – David
爲什麼不是泛型? 'MyObject'? –
2013-06-20 02:37:01