作为对我之前的问题的跟进 具有组合通用边界的函数,例如:
<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)
函数处理