List is a raw type. References to generic type Lis

2020-02-05 02:56发布

Below is my syntax

List synchronizedpubliesdList = Collections.synchronizedList(publiesdList);

I am getting a syntax error of:

List is a raw type. References to generic type List<E> should be parameterized.

Please suggest the solution.

4条回答
▲ chillily
2楼-- · 2020-02-05 03:12

I've had the same warnings in Eclipse and just click on the warning sign and get the option of adding a type argument to the Hash, List, Array or what have you. Big list of discussion here What is a raw type and why shouldn't we use it?

查看更多
何必那么认真
3楼-- · 2020-02-05 03:12

You may define "publiesdList" this way:

List<String> publiesdList = new List<String>();

The warning will dissappear.

查看更多
Deceive 欺骗
4楼-- · 2020-02-05 03:32

You need to give it the correct generic type e.g.

List<String> publiesdList = ...
List<String> synchronizedpubliesdList = Collections.synchronizedList(publiesdList);
查看更多
淡お忘
5楼-- · 2020-02-05 03:34

I believe that

List is a raw type. References to generic type List should be parameterized

is not an error, but a warning.

Understanding generics is a cornerstone if you are planning to use Java so I suggest that you should check out Java's tutorial pages about this:

java generics tutorials

So if you know what type of objects are contained in publiesdList, than you can do this:

List<YourType> synchronizedpubliesdList = Collections.synchronizedList(publiesdList);

If there are multiple types of objects in your list than you can use a wildcard:

List<?> synchronizedpubliesdList = Collections.synchronizedList(publiesdList);

Or if you just want to get rid of the warning than you can suppress it like this:

@SuppressWarnings("rawtypes")
List synchronizedpubliesdList = Collections.synchronizedList(publiesdList);

the latter is not recommended however.

查看更多
登录 后发表回答