メソッド インスタンス変数に基づいて強制的にコンパイル エラーを発生させることはできますか? 以下のクラスの例を考えてみましょう。
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 Relationship オブジェクトを作成しようとしています。Model
基本インスタンスとターゲット クラスを使用してオブジェクトをインスタンス化しています。たとえば、HasMany
関係オブジェクトを作成しています。Customer
インスタンスとクラスを使用してオブジェクトをインスタンス化しますDocument
。私のHashMany
オブジェクトには、インスタンスにアタッチされた.get()
すべてを返すメソッドがあります。また、インスタンスをフィードし、そのメソッドがモデルをデータベース内のモデルにアタッチするメソッドもあります。オブジェクトがインスタンス化されたクラスからのモデルのみを受け入れるようにメソッドを強制したいと思います。この場合、クラス。Documents
Customer
.attach(Model model)
Document
Document
Customer
.attach(Model model)
Document