как следить за мой 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