Задания. 1) Какая запись является правильной?

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<>();

}

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: