Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // For http://stackoverflow.com/questions/13931900/generic-class-wi
- public class Test {
- // This works
- public static <X> void test(LabelField<X> lf) {
- LabelProvider<X> lp = lf.getLabelProvider();
- new Wrapper<X, LabelField<X>>(lf, lp);
- }
- }
- class Wrapper<V, F extends Field<V>> {
- private F field;
- private LabelProvider<V> labelProvider; // Converts from V to String
- // Since we have no guarantee that F has a LabelProvider, one is explicitely supplied.
- public Wrapper(F field, LabelProvider<V> labelProvider) {
- this.field = field;
- this.labelProvider = labelProvider;
- }
- public Wrapper(LabelField<V> labelField) {
- // This doesn't work, why ?
- this(labelField, labelField.getLabelProvider());
- }
- public String getLabel() {
- return labelProvider.getLabel(field.getValue());
- }
- public F getField() {
- return field;
- }
- public V fetValue() {
- return field.getValue();
- }
- }
- interface Field<V> {
- V getValue();
- }
- interface LabelProvider<V> {
- String getLabel(V v);
- }
- interface LabelField<V> extends Field<V> {
- LabelProvider<V> getLabelProvider();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement