Я пытался в течение нескольких дней выяснить, возможно ли, я потерпел неудачу, но, возможно, это возможно (я думаю, это должно быть возможно).Создать компоненты пользовательского интерфейса
Скажем, у нас есть несколько компонентов пользовательского интерфейса, аналогичные с Свинг иерархий + мы будем использовать беглые интерфейсы Fluent Interfaces:
public abstract class Component {
...
public abstract Component setName(String name);
public abstract String getName();
...
}
public abstract class Panel extends Component {
....
}
public abstract class TitledPanel extends Panel {
....
public abstract TitledPanel setTitle(String title);
public abstract String getTitle();
}
Можно ли, используя общий, чтобы иметь возможность написать что-то подобное?
new TitledPanel().setName("panel").setTitle("Title);
setName должен возвращать TitledPanel вместо Component, чтобы иметь возможность связывать эти вызовы.
Это простой пример, но идея состоит в том, как только у меня есть объект типа T любого вызова к любому беглой методе суперкласса для возвращения типа T.
Edit 1: Я забыл, чтобы исключить часть с переопределением методов и возвратом ковариантных типов :) Я хочу просто простые дженерики, если это действительно возможно.
«Во-первых, я предлагаю использовать только методы набора и сбросить набор». - не понял эту часть. –
Какая часть? Я предлагаю не получать методы - они бесполезны. Я также предлагаю не использовать префикс 'set', потому что он уродливый и ненужный. –
Вам нужно иметь методы доступа к этим членам. Ну, установить и получить имеет смысл, и это также соглашение об именах от Sun: http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html Не то, чтобы у Солнца не было никаких нарушенных правил, но эти простые правила имеют смысл, по крайней мере для меня. –