我可以根据方法实例变量强制编译错误吗?考虑下面的示例类。
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 关系对象。我正在使用基Model
实例和目标类实例化对象。例如,我正在创建一个HasMany
关系对象。我会用一个Customer
实例和一个Document
类来实例化对象。在我的HashMany
对象中,我有一个.get()
返回所有Documents
附加到Customer
实例的方法。我也有一个.attach(Model model)
方法,我会向它提供一个Document
实例,并且该方法会将模型附加Document
到Customer
数据库中的模型。我想强制该.attach(Model model)
方法只接受实例化对象的类中的模型。在这种情况下,Document
类。