Здесь я рассматриваю несколько случаев, через которые вы можете очистить концепцию
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
тип, на который ссылается переменная.
Спасибо @baptiste за то, что указали мне в правильном направлении. Чтобы вставить слой под все остальные слои, просто измените элемент layers
объекта сюжета.
## For example:
P$layers <- c(geom_boxplot(), P$layers)
Этот удобный маленький функция вставляет слой с заданным z-уровнем:
insertLayer <- function(P, after=0, ...) {
# P : Plot object
# after : Position where to insert new layers, relative to existing layers
# ... : additional layers, separated by commas (,) instead of plus sign (+)
if (after < 0)
after <- after + length(P$layers)
if (!length(P$layers))
P$layers <- list(...)
else
P$layers <- append(P$layers, list(...), after)
return(P)
}
Как показано в документации ggplot здесь , вы можете настроить объект ggplot скелета и добавить слои. Порядок, в котором вы указываете слои, - это порядок, в котором они будут отображаться на вашем участке.
Это даст ваш ожидаемый результат:
ggplot() +
geom_boxplot(data = dat, aes(x=id, y=val)) +
geom_point(data = dat, aes(x=id, y=val))
Это приведет к вашему неправильному выводу:
ggplot() +
geom_point(data = dat, aes(x=id, y=val)) +
geom_boxplot(data = dat, aes(x=id, y=val))
Я думаю, что это также ответит на ваш бонусный вопрос: )
theme()
? (Я спрашиваю, потому что просто добавление их не сработало, поэтому я не был уверен, есть ли небольшое изменение, необходимое для вашего подхода к этим типам элементов управления элементами) ... – theforestecologist 29 May 2018 в 22:06