1) Какая запись является правильной?
a) 1
b) 2
c) Никакая
d) Обе
Ответ: d)
2) Является ли ArrayList<? extends Number> подклассом ArrayList<Integer>. Является ли ArrayList<?> подклассом ArrayList<? super Integer>.
a) 1 верно, 2 неверно
b) 2 верно, 1 неверно
c) Ничего не истинно (ни то, ни то ниверно)
d) Все дозволенно (и то, и то верно)
Ответ: c)
3) Какие строчки нужно закомментировать, чтобы код скомпилировался:
a) 4
b) 3
c) 4 и 2
d) 1 и 2
e) 1 и 4
Ответ: а)
4) Какой модификатор нельзя использовать при объявлении переменной параметризованого типа?
a) final
b) public
c) private
d) static
e) protected
Я использовал картинки кода, чтобы его нельзя было скопиросать и вставить в редактор, а пришлось в ручную печать, чтобы развивать навыки написания кода.
Файлы, которые я использовал.
Ch01.java
public class Ch01 {
public static void someMethod(Number n) {
System.out.println(n);
}
public static void main(String[] args) {
someMethod(Integer.valueOf(10));
someMethod(Double.valueOf(4.0));
}
}
Ch02.java
import java.util.ArrayList;
import java.util.Arrays;
public class Ch02 {
public static void someMethod(ArrayList<Number> masN) {
for (Number elem: masN) {
System.out.println(elem);
}
}
public static void main(String[] args) {
|
|
ArrayList<Integer> li = new ArrayList<>();
for (int i = 0; i < 10; i += 2) {
li.add(Integer.valueOf(i));
}
ArrayList<Double> ld = new ArrayList<>();
for (int i = 10; i >= 0; i -= 3) {
ld.add(Double.valueOf(i));
}
someMethod(li); // compile-error
someMethid(ld); // compile-error
}
}
Ch03.java
import java.util.ArrayList;
import java.util.Arrays;
public class Ch03 {
public static void someMethod(ArrayList<? extends Number> masN) {
for (Number elem: masN) {
System.out.println(elem);
}
}
public static void main(String[] args) {
ArrayList<Integer> li = new ArrayList<>();
for (int i = 0; i < 10; i += 2) {
li.add(Integer.valueOf(i));
}
ArrayList<Double> ld = new ArrayList<>();
for (int i = 10; i >= 0; i -= 3) {
ld.add(Double.valueOf(i));
}
someMethod(li); // OK
someMethod(ld); // OK
}
}
Ch04.java
public class Ch04 {
public static class Pair<K, V> {
private K key;
private V value;
public Pair(K key, V value) {
this.key = key;
this.value = value;
}
//...
}
public static void main(String[] args) {
//wrong, compile-error
Pair<Integer, Character> p1 = new Pair<>(8, 'a');
//right
Pair<Integer, Character> p2 = new Pair<>(Integer.valueOf(8), Character.valueOf('a'));
}
}
Ch05.java
import java.util.List;
import java.util.ArrayList;
public class Ch05 {
//Wrong method
public static <E> void append1(List<E> list) {
E elem = new E(); // compile-time error
list.add(elem);
}
//Right method
public static <E> void append2(List<E> list, Class<E> cls) throws Exception {
E elem = cls.newInstance();
list.add(elem);
}
public static void main(String[] args) {
List<String> ls = new ArrayList<>();
append1(ls); // compile-time error
//OK
try {
append2(ls, String.class);
} catch (Exception e) {
System.out.println("error!");
}
}
}
Ch06.java
public class Ch06 {
public static class MobileDevice<T> {
private static T os; // wrong
//wrong
public static T getOS() {
return os;
}
public MobileDevice() {}
//...
}
public class Smartphone {}
public class Pager {}
public class TabletPC {}
public static void main(String[] args) {
MobileDevice<Smartphone> phone = new MobileDevice<>();
MobileDevice<Pager> pager = new MobileDevice<>();
MobileDevice<TabletPC> pc = new MobileDevice<>();
}
}
Ch07.java
import java.util.List;
import java.util.ArrayList;
public class Ch07 {
public static <E> void rtti1 (List<E> list) {
if (list instanceof ArrayList<Integer>) { // compile-time error
|
|
//...
}
}
public static void rtti2(List<?> list) {
if (list instanceof ArrayList<?>) { // Norm
//..
}
}
public static <E> void rtti3 (List<E> list) {
if (list instanceof ArrayList<?>) {
//..
}
}
public static <E> void rtti4 (List<E> list) {
if (list instanceof ArrayList<E>) {
//..
}
}
public static void main(String[] args) {
List<Integer> li = new ArrayList<>();
List<Number> ln = (List<Number>) li; // compile-time error
List<String> l1 = new ArrayList<>();
ArrayList<String> l2 = (ArrayList<String>) l1;
}
}
Ch08.java
public class Ch08 {
public static void main(String[] args) {
Integer pr1 = new Integer(10);
Double pr2 = new Double(4.1);
System.out.println(pr1 instanceof Integer); //true
System.out.println(pr1 instanceof Double); // compile-time error
System.out.println(pr2 instanceof Integer); // compile-time error
System.out.println(pr2 instanceof Double); //true
System.out.println(pr1 instanceof Number); //true
System.out.println(pr2 instanceof Object); //true
}
}
Ch10.java
import java.util.Set;
public class Ch10 {
public void print (Set<String> strSet) { }
public void print (Set<String> intSet) { }
}
Test1.java
import java.util.ArrayList;
public class Test1 {
public static void main(String[] args) {
ArrayList<Integer> list1 = new ArrayList<Integer>();
ArrayList<double> list2 = new ArrayList<double>();
ArrayList<ArrayList<Character>> list3= new ArrayList<>();
ArrayList<int> list4 = new ArrayList<>();
}
}