If that concern doesn't seem like it would be a problem, then I  definitely
agree with you that creating abstract base classes that have the
parametrized types seems like the best solution.


On Tue, Feb 24, 2009 at 10:54 AM, Ray Ryan <rj...@google.com> wrote:

> That feedback sounds a bit pedantic and impractical to me. And my job title
> used to be Senior Pedant.
>
>
> On Tue, Feb 24, 2009 at 7:44 AM, Emily Crutcher <e...@google.com> wrote:
>
>> It could work, though I found when I used this technique with
>> DatePicker (DatePicker extends AbstractDatePicker<MonthSelector,
>> CalandarView>), there was some feedback that having that abstract type layer
>> was slightly confusing because good OO practice implied that references
>> should then be typed as AbstractDatePicker, which then brought in the
>> complexity of the generic types back into the lives of the 90% who did not
>> care about the parameterized arguments.
>>
>>
>>
>>
>>
>>
>>
>>
>> On Tue, Feb 24, 2009 at 10:00 AM, Ray Ryan <rj...@google.com> wrote:
>>
>>> How about extracting a parameterized super class:
>>> AbstractSuggestionBox<T extends Suggestion>
>>> SuggestionBox extends AbstractSuggestionBox<Suggestion>
>>>
>>> rjrjr
>>>
>>> On Mon, Feb 23, 2009 at 7:15 PM, Emily Crutcher <e...@google.com> wrote:
>>>
>>>>
>>>>
>>>> On Mon, Feb 23, 2009 at 7:04 PM, Isaac Truett <itru...@gmail.com>wrote:
>>>>
>>>>>
>>>>> The API documentation has this to say on the subject:
>>>>>
>>>>> "[...] To send back a DTO with each suggestion, extend the Suggestion
>>>>> interface and define a getter method that has a return value of the
>>>>> DTO's type. Define a class that implements this subinterface and use
>>>>> it to encapsulate each suggestion.
>>>>>
>>>>> To access a suggestion's DTO when the suggestion is selected, add a
>>>>> SuggestionHandler to the SuggestBox (see SuggestBox's documentation
>>>>> for more information). In the
>>>>> SuggestionHandler.onSuggestionSelected(SuggestionEvent event) method,
>>>>> obtain the selected Suggestion object from the SuggestionEvent object,
>>>>> and downcast the Suggestion object to the subinterface. Then, acces
>>>>> the DTO using the DTO getter method that was defined on the
>>>>> subinterface."
>>>>>
>>>>> See
>>>>> http://google-web-toolkit.googlecode.com/svn/javadoc/1.5/com/google/gwt/user/client/ui/SuggestOracle.Suggestion.html
>>>>>
>>>>> (the 1.6 version is similar, but with the new event model)
>>>>>
>>>>> So the endorsed solution is to extend and cast. Fair enough. This
>>>>> probably dates from pre-1.5, and it was good enough for then. But is
>>>>> there a reason not to parameterize SuggestBox with <T extends
>>>>> Suggestion> (and SuggestOracle<T>, SelectionEvent<T>, etc.) now that
>>>>> that's an option? Or perhaps make Suggestion implement HasValue<T>? I
>>>>> have an application that uses many SuggestBoxes and many different
>>>>> Suggestion subclasses and this would simplify things (and eliminate
>>>>> much type-casting).
>>>>
>>>>
>>>> I'm not sure parameterizing  SuggestBox itself would be worth it, as
>>>> most people use it without creating new types of suggestions: so the
>>>> parameterization would add clutter for the many and prevent casts for the
>>>> few.  Though, I completely agree it is annoying to have to cast. Perhaps we
>>>> could create a composite-based CustomSuggestBox that is parameterized?
>>>>
>>>>
>>>>
>>>>>
>>>>>
>>>>> Any thoughts on this? Horrible side effects that I'm missing?
>>>>>
>>>>> - Isaac
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> "There are only 10 types of people in the world: Those who understand
>>>> binary, and those who don't"
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>> --
>> "There are only 10 types of people in the world: Those who understand
>> binary, and those who don't"
>>
>>
>>
>
> >
>


-- 
"There are only 10 types of people in the world: Those who understand
binary, and those who don't"

--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---

Reply via email to