的跟进我previous question 经与结合的通用范围,如函数:是否结合泛型边界反模式?
<T extends Foo & Bar> void doStuff(T argument) {
//do stuff wich should only be done if arguments is both foo and bar
}
因为这不是从一个不明物体浇注料,你需要有这实际上实现这些接口的一些对象的知识。在我看来,需要知道传递给doStuff(T a)
的对象参数的具体类型是违反德米特定律的。
功能不指定需要知道实际的类(可能有许多不同的),我真的不想知道它知道这个类增加了我的代码库的依赖。
正在使用这些边界反模式?如果是的话,最好怎么避免呢?
案例情况涉及指定对象的一个接口是持久性的,而另一个指定对象具有相关实体。在这种情况下,doStuff(T a)
函数在相关实体持续存在时持久化。但非持久实体也可以有相关的实体,但不应该由doStuff(T a)
函数处理
这个问题似乎涉及到[投地结合的通用(http://stackoverflow.com/questions/318208/cast-to-combined-generic)问题(由同一作者)。 – 2008-11-26 11:26:20
它是,但我认为这将是更好的清晰度,使之成为一个不同的问题 – pvgoddijn 2008-11-26 13:09:25
嗯,你知道有关它的一切很明显,我只是在想其他人谁可能需要更多的背景:) – 2008-11-26 13:13:20