Здесь я рассматриваю несколько случаев, через которые вы можете очистить концепцию
1. ArrayList<String> arr = new ArrayList<String>();
2. ArrayList<String> arr = new ArrayList();
3. ArrayList arr = new ArrayList<String>();
ArrayList<String> arr
является ссылочной переменной ArrayList
с типом String
, которые ссылаются на объект ArralyList
типа String
. Это означает, что он может содержать только объект типа String.
Строго для String
не для Raw Type, поэтому он никогда не будет предупреждать.
arr.add("hello");// alone statement will compile successfully and no warning.
arr.add(23); //prone to compile time error.
//error: no suitable method found for add(int)
В этом случае ArrayList<String> arr
является строгим типом, но ваш объект new ArrayList();
является сырым типом.
arr.add("hello"); //alone this compile but raise the warning.
arr.add(23); //again prone to compile time error.
//error: no suitable method found for add(int)
здесь arr
является строгим типом. Таким образом, он будет поднимать ошибку времени компиляции при добавлении integer
.
Предупреждение: - Объект типа
blockquote>Raw
ссылается на типStrict
Referenced VariableArrayList
.Случай 3
В этом случае
ArrayList arr
является сырым типом, но ваш Objectnew ArrayList<String>();
является строгим типом.arr.add("hello"); arr.add(23); //compiles fine but raise the warning.
Он добавит в него любой тип объекта, потому что
arr
является сырым типом.Внимание: - A
blockquote>Strict
Тип Объект ссылается на araw
тип, на который ссылается переменная.
Сначала сделайте Polyline drawRoute полем вместо локальной переменной. Затем вы можете обновить полилинию внутри onMarkerDragEnd, вызвав drawRoute.setPoints (arrayPoints).
Затем вам понадобится Java-Map, который отслеживает, какой маркер отвечает за какой-то момент в массиве. Карта будет иметь идентификатор-маркер в качестве ключа и индекс массива как значение. (Вы получаете идентификатор маркера из маркера, который возвращается map.addMarker). Когда маркер перетаскивается, вы можете узнать индекс соответствующей точки в массивах, используя идентификатор маркера и указанную Java-карту. При этом вы можете обменять точку в массиве и снова вызвать drawRoute.setPoints.