1

メソッド インスタンス変数に基づいて強制的にコンパイル エラーを発生させることはできますか? 以下のクラスの例を考えてみましょう。

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()すべてを返すメソッドがあります。また、インスタンスをフィードし、そのメソッドがモデルをデータベース内のモデルにアタッチするメソッドもあります。オブジェクトがインスタンス化されたクラスからのモデルのみを受け入れるようにメソッドを強制したいと思います。この場合、クラス。DocumentsCustomer.attach(Model model)DocumentDocumentCustomer.attach(Model model)Document

4

1 に答える 1