Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Can't avoid "References to generic type List<E> should be parameterized" warning here can I ?

3,167 views
Skip to first unread message

Sébastien de Mapias

unread,
May 28, 2008, 11:34:40 AM5/28/08
to
Hi,
I'm writing some kind of gateway between 2 packages, whose a
few classes have the same name (I need to bind these classes).

So I'm retrieving the attributes of my source class1 and set my
equivalent class2 in the other pkg with these attributes when
methods names -and attributes- match.

Excerpt from my method:
1 public my.persistent.Pst mapFromProtocol(my.protocol.Pst src)
2 {
3 my.persistent.Pst target = new my.persistent.Pst();
4 for (Iterator<my.protocol.Remark> it =
src.getRemark().iterator(); it.hasNext(); )
5 target.getRemark().add(it.next());
6
7 ... //many other attributes/objects to set too
8
9 return target;
10 }

In RAD the line 5 is underlined in yellow and it says "Type safety:
The method add(Object) belongs to the raw type List. References
to generic type List<E> should be parameterized".

Is there a way to avoid this warning in my case, as I can't
instantiate
a List<Remark> lr = new ArrayList() of course... (because I have no
method setRemark() in target)

Thanks.
Regards,
Seb

Jens Mattke

unread,
May 28, 2008, 3:04:54 PM5/28/08
to
Hello Sébastien.

You could add an annotation to your method:

@SuppressWarnings("unchecked")


> 1 public my.persistent.Pst mapFromProtocol(my.protocol.Pst src)
> 2 {

...
> 10 }

But that would only be a cosmetic solution.

If it is possible for you to alter the my.persistent.Pst class, you
could change the remark's type to List<Object>.
The add method will accept everything, then.

Regards,
Jens

Roedy Green

unread,
May 28, 2008, 5:26:32 PM5/28/08
to
On Wed, 28 May 2008 08:34:40 -0700 (PDT), Sébastien de Mapias
<sglr...@gmail.com> wrote, quoted or indirectly quoted someone who
said :

> for (Iterator<my.protocol.Remark> it =
>src.getRemark().iterator(); it.hasNext(); )
> 5 target.getRemark().add(it.next());

if you use a for:each Iterable, you would not need the <>.
--

Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com

Sébastien de Mapias

unread,
May 29, 2008, 2:54:23 AM5/29/08
to
I just replaced
~ for (Iterator<my.protocol.Remark> it = src.getRemark().iterator();
it.hasNext(); )
~ target.getRemark().add(it.next());
with
~ for (my.protocol.Remark r : src.getRemark())
~ target.getRemark().add(r);
but I still have this beige serrated underline and the same warning.

Thanks for your replies.
Seb


voorth

unread,
May 29, 2008, 8:11:25 AM5/29/08
to

Can you change the return type of getRemark() to List<Remark>?
And while you'r at it, change its name to getRemarks(). After all,
you're returning a collection of remarks.

Oh, and the for loop is probably not needed; try :
target.getRemark().addAll(src.getRemark());

Henk

Daniele Futtorovic

unread,
May 29, 2008, 12:27:49 PM5/29/08
to

:shrug:

If you've got your mind set on getting rid of that "beige serrated
underline" that much, you can always cast:

Collection<my.protocol.Remark> c = (Collection<my.protocol.Remark>)
src.getRemark();


--
DF.
to reply privately, change the top-level domain
in the FROM address from "invalid" to "net"

Daniele Futtorovic

unread,
May 29, 2008, 12:47:52 PM5/29/08
to
On 2008-05-29 18:27 +0100, Daniele Futtorovic allegedly wrote:
> On 2008-05-29 08:54 +0100, Sébastien de Mapias allegedly wrote:
>> I just replaced
>> ~ for (Iterator<my.protocol.Remark> it = src.getRemark().iterator();
>> it.hasNext(); )
>> ~ target.getRemark().add(it.next());
>> with
>> ~ for (my.protocol.Remark r : src.getRemark())
>> ~ target.getRemark().add(r);
>> but I still have this beige serrated underline and the same warning.
>
> :shrug:
>
> If you've got your mind set on getting rid of that "beige serrated
> underline" that much, you can always cast:
>
> Collection<my.protocol.Remark> c = (Collection<my.protocol.Remark>)
> src.getRemark();

Ah, wait -- no you probably can't. Too bad.

Daniel Pitts

unread,
May 29, 2008, 2:52:30 PM5/29/08
to

Change target.getRemark() and src.getRemark() both to return List<Remark>

While your at it:
target.getRemark().addAll(src.getRemark()) might help you out some.

What I don't get is that if Pst.getRemark().iterator() returns an
Iterator<my.protocal.Remark>, then there shouldn't be a problem.

--
Daniel Pitts' Tech Blog: <http://virtualinfinity.net/wordpress/>

0 new messages