防止使用编译器技巧进行方法调用

问题描述

| 我大致有以下几种类型:
interface Record {}
interface UpdatableRecord extends Record {}

interface Insert<R extends Record> {

    // Calling this method only makes sense if <R extends UpdatableRecord>
    void onDuplicateKeyUpdate();
}
我想在致电
onDuplicateKeyUpdate()
时对
<R>
有更多限制。原因是,仅当
<R>
绑定到
UpdatableRecord
的任何子类型,而不仅仅是ѭ5this时,此方法才有意义。例子:
Insert<?>               i1;
Insert<Record>          i2;
Insert<UpdatableRecord> i3;

// these shouldn\'t compile
i1.onDuplicateKeyUpdate();
i2.onDuplicateKeyUpdate();

// this should compile
i3.onDuplicateKeyUpdate();
是否有任何技巧或方法可用于仅针对一个方法声明为类的泛型类型添加附加限制? 注意: 声明“ 7”不是一个选择,因为我希望为不可更新的记录设置一个“ 8”的灵活性 派生ѭ9并向下推该方法可能有一个选择,但我真的不想引入一种新类型。我有几种方法,但有几种不同的限制,这会导致类型爆炸。 投掷ѭ10很明显,但似乎Java 1.4做到了。我真的很想知道我是否可以使用泛型和编译器来解决此问题。 理想的解决方案:
// This would be an annotation to be interpreted by the compiler. There is no such
// thing in Java,as far as I know. But maybe there\'s a trick having the same effect?
@Require(R extends UpdatableRecord)
void onDuplicateKeyUpdate();
    

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)