Pokročilé programování na platformě Java [Zkouška 10.6.2019]

Odeslat odpověď

Smajlíci
:D :) :( :o :shock: :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode je zapnutý
[img] je zapnutý
[flash] je vypnutý
[url] je zapnuté
Smajlíci jsou zapnutí

Přehled tématu
   

Rozšířit náhled Přehled tématu: Pokročilé programování na platformě Java [Zkouška 10.6.2019]

Pokročilé programování na platformě Java [Zkouška 10.6.2019]

od LadyMalande » 10. 6. 2019 12:57

Pokročilé programování na platformě Java [Zkouška 10.6.2019] - Hnětynka

1) Object obj = ....
V objektu je přiřazena instance nějaké třídy. Dopište přiřazení tak, aby v s byl název třídy obj.
String s = ........

2) Doplňte kód tak, aby se do m správně přiřadila metoda lookup, když víte, že getMethod(String name, Class<?> ...).
class Foo<T>{
void lookup(T value){}
}
Method m = (new Foo<Integer>()).getClass().getMethod(..................

3)máme List<String> ls, List<Object> lo, Collection<Object> co a Collection<? extends String> cu. Která přiřazení jde udělat?
A) lo = ls;
B) co = lo;
C) co = ls;
D) cu = lo;

4) Mějme tento kud kódu, vyberte pravdivá tvrzení:
class Foo<T super Number>{
private T v;
public Foo(T t){v=t;}
public T get(){};
}
A) Kód jde bez problému přeložit a spustit.
B) Chyba je na 1. řádku, protože třída nemůže mít v generickém typu super.
C) Chyba je na 2. řádku, protože generický typ nelze přiřazovat privátním atributům.
D) Chyba je na 3. řádku, protože generický typ nemůže být typem konstruktoru.
E) Chyba je na 4. řádku, protože T nemůže být návratovým typem metody.

5) Napište, jak bude vypadat kód po erasure:
public static <T extends Comparable<? super T>> T max(Collection<T> coll);

6) Vyberte správné použití anotace:
public @interface RequestForEnhancement {
int id();
String synopsis();
String engineer() default "[...]";
String date() default "[...]";
}
A) @RequestForEnhancement(
id = 285,
synopsis = "Enable time travel",
engineer = "Mr. Peabody",
date = "4/1/3007")
B) @RequestForEnhancement(
id = 285,
synopsis = "Enable time travel")
C) @RequestForEnhancement(
id = 285)
D) @RequestForEnhancement(
id = 285,
synopsis = "Enable time travel",
engineer = "Mr. Peabody")

7) Vyberte správně deklarované anotace
A) public @interface Foo {}
B) public @interface Foo<T> {T value();}
C) public @interface Foo {Foo value();}
D) public @interface Foo {String value();}

8 ) Napište kód, který definuje, že modul foo.bar.baz potřebuje java.logging a žádnou jinou. Jedná se o náplň dokumentu module-info.java.

9) Do proměnné cl uložte classloader třídy java.lang.System. Nezapomeňte proměnné cl přiřadit typ. Pokud classloader přiřadit nejde, napište proč.

10) Napište metodu, která z libovolného pole překopíruje prvky do Collection< ....>


Odpovědi: (Alespoň zhruba)
1) String s = obj.getClass().getName();
2) Tady si dejte velký pozor. Tento příklad je sice ve slidech z 1. přednášky na straně 42, ale není u něj napsáno, že kód na slidu je špatně.
Správná odpověď je tedy getMethod("lookup", Object.class); protože se to provádí za běhu, kde už informace o <Integer> nemáme.
3) Pouze B.
4) Pouze B.
5) public static Comparable max(Collection coll);
6) A, B, D
7) A, D
8 ) module foo.bar.baz {
requires java.logging;
}
9) Asi tak: ClassLoader cl = Class.ForName("java.lang.System").getClassLoader();
10) Třeba takhle:
public <T> void copy(Collection<? super T> col, T[] arr){
for(T a: arr){
col.add(a);
}}

Nahoru