1. Co można powiedzieć o poniższym kodzie?

Podobne dokumenty
1. Co można powiedzieć o poniższym kodzie (zakładając, że znajduje się on w jednym pliku A.java)?

1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3();

package pakieta; import pakietb.b; package pakietb; public class B { B(){} public class A { private B b; A(B b) { this.b = b; } }

1. Co można powiedzieć o poniższym kodzie? public class A { void m(int a) { } int m(string s) { return Integer.parseInt(s); }

1. Co można powiedzieć o poniższym kodzie (zakładając, że zaimportowano wszystkie niezbędne klasy)?

1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4);

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

Wykład 7: Pakiety i Interfejsy

Programowanie obiektowe

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Systemy Rozproszone - Ćwiczenie 6

Remote Method Invocation 17 listopada 2010

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Programowanie obiektowe

Aplikacja wielowątkowa prosty komunikator

Podejście obiektowe do budowy systemów rozproszonych

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Java. Programowanie Obiektowe Mateusz Cicheński

Wykład 8: Obsługa Wyjątków

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Aplikacja wielow tkowa prosty komunikator

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Języki i metody programowania Java. Wykład 2 (część 2)

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Java: interfejsy i klasy wewnętrzne

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Podstawy i języki programowania

Wykład 6: Dziedziczenie

Języki i Techniki Programowania II. Wykład 7. Współbieżność 1

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Aplikacje RMI

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Języki i metody programowania Java Lab4 podejście obiektowe, zastosowanie pojemników

Dawid Gierszewski Adam Hanasko

Programowanie obiektowe

Aplikacje RMI Lab4

Języki i metody programowania Java Obsługa zdarzeń - przykłady

Kurs programowania. Wykład 8. Wojciech Macyna

Programowanie rozproszone w języku Java

Dokumentacja do API Javy.

Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Języki i metody programowania Java INF302W Wykład 3 (część 1)

Język Java wątki (streszczenie)

Tworzenie i wykorzystanie usług

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Programowanie obiektowe

Zaawansowane aplikacje WWW - laboratorium

Projektowanie aplikacji internetowych laboratorium

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Java programowanie w sieci. java.net RMI

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Wykład 4: Klasy i Metody

Wykład 5: Więcej o Klasach i Metodach

WSPÓŁBIEŻNOŚĆ. MATERIAŁY:

SWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe.

Wykład 2: Podstawy Języka

Rozdział 4 KLASY, OBIEKTY, METODY

Języki i metody programowania Java Lab2 podejście obiektowe

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

Operatory. Składnia. Typy proste. Znaki specjalne

1 Klasa File. 2 Writer. Programowanie w j zyku Java - Adam Krechowicz. Klasa File zapewnia podstawowe operacje na plikach

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Polimorfizm. dr Jarosław Skaruz

Aplikacje w środowisku Java

public - może być używana w kodzie poza klasą, jedna klasa ModyfikatorKlasy może być kombinacją wyrażeń:

Algorytmy z powrotami. Algorytm minimax

Systemy Rozproszone - Ćwiczenie 4

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

Katalog książek cz. 2

Programowanie obiektowe

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1

Współbieżność w środowisku Java

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Aplikacje w Javie- wykład 11 Wątki-podstawy

Generatory. Michał R. Przybyłek

Programowanie w Internecie. Java

KLASY, INTERFEJSY, ITP

1 Atrybuty i metody klasowe

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

Podstawy współbieżności

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Kurs programowania. Wykład 9. Wojciech Macyna

Programowanie współbieżne Laboratorium nr 11

Transkrypt:

1. Co można powiedzieć o poniższym kodzie? void m(int a) { int m(string s){return Integer.parseInt(s); String m(int a){ return Integer.toString(a); a) Jego kompilacja powiedzie się b) Jego kompilacja nie powiedzie się (nieobsłużony wyjątek NumberFormatException) c) Jego kompilacja nie powiedzie się (zła konwersja z int do String) d) Jego kompilacja nie powiedzie się (złe przeciążenie metody m)

2. Co można powiedzieć o poniższym kodzie (zamieszczonym w dwóch osobnych plikach)? package inny; private void k() { void l() { public void m() { void n() { package inny; public class B { B(){ A a = new A(); // 1 a.l(); // 2 a.n(); // 3 a) Jego kompilacja powiedzie się b) Jego kompilacja nie powiedzie się (wystąpi błąd w linii 1) c) Jego kompilacja nie powiedzie się (wystąpi błąd w linii 2) d) Jego kompilacja nie powiedzie się (wystąpi błąd w linii 3)

3. Co można powiedzieć o poniższym kodzie (zamieszczonym w dwóch osobnych plikach)? package pakiecik; private int i; public void m(a a) { a.i++; // 1 package inny; import pakiecik.a; public class B extends A{ public static void main(string[] args){ B b1 = new B(), b2 = new B(); // 2 b1.m(b2); // 3 a) Jego kompilacja i wykonanie metody main powiedzie się b) Jego kompilacja nie powiedzie się (wystąpi błąd w linii 1) c) Jego kompilacja nie powiedzie się (wystąpi błąd w linii 2) d) Jego kompilacja nie powiedzie się (wystąpi błąd w linii 3)

4. Co można powiedzieć o poniższym kodzie (zamieszczonym w dwóch osobnych plikach)? package pakiecik; protected int i; public int m(a a) { a.i++; return i; // 1 package inny; import pakiecik.a; public class B extends A{ public static void main(string[] args){ B b1 = new B(), b2 = new B(); // 2 b1.i =b1.m(b2); // 3 a) Jego kompilacja i wykonanie metody main powiedzie się b) Jego kompilacja nie powiedzie się (wystąpi błąd w linii 1) c) Jego kompilacja nie powiedzie się (wystąpi błąd w linii 2) d) Jego kompilacja nie powiedzie się (wystąpi błąd w linii 3)

5. Co można o powiedzieć o poniższym kodzie (zamieszczonym w trzech osobnych plikach)? private A(){ // 1 public class C { public static void main(string[] args) { B b = new B(); // 3 public class B extends A { public B(){ // 2 a) Jego kompilacja powiedzie się b) Wystąpi błąd kompilacji w linii 1 c) Wystąpi błąd kompilacji w linii 2 d) Wystąpi błąd kompilacji w linii 3

6. Co można o powiedzieć o poniższym kodzie? private class A { public static void main(string[] args){ A.A a = null; a) Jego kompilacja powiedzie się b) Wystąpi błąd kompilacji (nie można deklarować wewnętrznych klas o takiej samej nazwie jak klasa zewn.) c) Wystąpi błąd kompilacji (nie można deklarować wewnętrznych klas jako prywatnych) d) Wystąpi błąd kompilacji (nie można odwoływać się do typu klasy wewnętrznej instancyjnej będąc wewnątrz jakiejś statycznej metody).

7. Co można powiedzieć o poniższym kodzie? private void m(){ // 1 private final class B { // 2 public static void main(string[] args){ new A().m(); // 3 a) Jego kompilacja powiedzie się b) Wystąpi błąd kompilacji w linii 1 c) Wystąpi błąd kompilacji w linii 2 d) Wystąpi błąd kompilacji w linii 3

8. Co można powiedzieć o poniższym kodzie? private int i; default void m() { void m(int i) { this.i = i; a) Jego kompilacja powiedzie się b) Wystąpi błąd kompilacji (zły dostęp do zmiennej prywatnej) c) Wystąpi błąd kompilacji (nie można umieszczać w klasie dwóch metod o tej samej nazwie) d) Wystąpi błąd kompilacji (implementacja metody domyślnej może nastąpić tylko w interfejsie, a nie w klasie)

9. Co można powiedzieć o poniższym kodzie? private String s; String gets(){ return s; A(String s){ this.s=s; public static void main(string[] args){ A a = new A("1"); switch(a.gets()){ case "1": System.out.print("1,"); break; case "2": System.out.print("2,"); break; a) Jego kompilacja i uruchomienie powiedzie się. Na ekranie zostanie wypisane 1, b) Jego kompilacja i uruchomienie powiedzie się. Na ekranie zostanie wypisane 1,2, c) Wystąpi błąd kompilacji (brak bezaurgumentowego konstruktora) d) Wystąpi błąd kompilacji (zła instrukcja switch)

10. Co można powiedzieć o poniższym kodzie? Integer i,j; j = new Integer(20); // 1 i = j; j ++; // 2 System.out.println(i); a) Jego kompilacja zakończy się błędem w linii 1 b) Jego kompilacja zakończy się błędem w linii 2 c) Jego kompilacja i uruchomienie powiedzie się. Na ekranie zostanie wypisane 20 d) Jego kompilacja i uruchomienie powiedzie się. Na ekranie zostanie wypisane 21

11. Co można powiedzieć o poniższym kodzie? interface I{ public void n(); public void m(){ public void n(i i){ i.n(); public static void main(string[] args){ A a = new A(); // 1 a.n(()-> {); // 2 a.n(a::m); // 3 a) Jego kompilacja powiedzie się b) Wystąpi błąd kompilacji w linii 1 c) Wystąpi błąd kompilacji w linii 2 d) Wystąpi błąd kompilacji w linii 3

12. Co można powiedzieć o poniższym kodzie? import java.util.set; import java.util.hashset; private String s; @Override public boolean equals(object obj) { if (! ((A)obj).equals(s)) return false; return true; public A(String s) {this.s=s; public static void main(string[] args){ Set<A> z = new HashSet<>(); z.add(new A("1")); z.add(new A("1")); System.out.println(z.size()); a) Jego kompilacja i uruchomienie metody main powiedzie się. Na ekranie pojawi się 1 b) Jego kompilacja i uruchomienie metody main powiedzie się. Na ekranie pojawi się 2 c) Jego kompilacja powiedzie się, jednak podczas uruchomienia pojawi się wyjątek d) Jego kompilacja zakończy się błędem

13. Co można powiedzieć o poniższym kodzie? package pakiecik; import java.util.set; import java.util.treeset; public static void main(string[] args){ Set<A> z = new TreeSet<A>(); z.add(new A()); z.add(new A()); System.out.println(z.size()); a) Jego kompilacja i uruchomienie metody main powiedzie się. Na ekranie pojawi się 1 b) Jego kompilacja i uruchomienie metody main powiedzie się. Na ekranie pojawi się 2 c) Jego kompilacja powiedzie się, jednak podczas uruchomienia pojawi się wyjątek d) Jego kompilacja zakończy się błędem

14. Co można powiedzieć o poniższym kodzie? package pakiecik; class E extends Exception{ public static void m() throws E, Exception { public static void main(string[] args) throws Exception { m(); a) Jego kompilacja i uruchomienie metody main powiedzie się b) Jego kompilacja zakończy się błędem (brak wyjątku E w klauzuli throws) c) Jego kompilacja zakończy się błędem (brak deklaracji importu klasy Exception) d) Jego kompilacja zakończy się błędem (bo w ciele metody m()brak wyrzucenia wyjątków)

15. Co można powiedzieć o poniższym kodzie? class B extends A { public static void n(a... a){ // 1 public static void main(string[] args) { B[] ab = new B[2]; A a = new A(); n(ab); // 2 n(a,a); // 3 a) Jego kompilacja i uruchomienie metody main powiedzie się b) Jego kompilacja zakończy się błędem w linii 1 c) Jego kompilacja zakończy się błędem w linii 2 d) Jego kompilacja zakończy się błędem w linii 3

16. Co można powiedzieć o poniższym kodzie (zakładając, że wykonano wszystkie konieczne importy)? public class A<T> { // 1 Collection<T> c = new LinkedList<T>(); // 2 public static void main(string[] args) { (new A<Integer>()).c.add(10); // 3 a) Jego kompilacja i uruchomienie metody main powiedzie się b) Jego kompilacja zakończy się błędem w linii 1 c) Jego kompilacja zakończy się błędem w linii 2 d) Jego kompilacja zakończy się błędem w linii 3

17. Co można powiedzieć o poniższym kodzie? public class A<T> { // 1 public <T,U> U m(u u, T t){ // 2 if(u.equals(t)) return u; else return null; public static void main(string[] args) { System.out.println((new A<Integer>()).m("10", "10")); // 3 a) Jego kompilacja i uruchomienie metody main powiedzie się (na ekranie wypisane zostanie 10) b) Jego kompilacja zakończy się błędem w linii 1 c) Jego kompilacja zakończy się błędem w linii 2 d) Jego kompilacja zakończy się błędem w linii 3

18. Co można powiedzieć o poniższym kodzie? public class A<T> { // 1 public static T t; // 2 public static void main(string[] args){ A<Integer> a = new A<>(); a.t++; // 3 a) Jego kompilacja i uruchomieniu metody main powiedzie się b) Jego kompilacja zakończy się błędem w linii 1 c) Jego kompilacja zakończy się błędem w linii 2 d) Jego kompilacja zakończy się błędem w linii 3

19. Jak wygląda ramka, na którą wstawiono panel o metodzie paintcomponent jak niżej? @Override protected void paintcomponent(graphics g) { super.paintcomponent(g); Graphics2D g2d = (Graphics2D) g; AffineTransform saveat = g2d.gettransform(); AffineTransform t = new AffineTransform(); t.translate(2,2); t.scale(4, -4); t.rotate(math.pi/4); g2d.settransform(t); g2d.drawline(0, 0, 20, -20); g2d.settransform(saveat); a) b) c) d)

20. Jak wygląda panel, na którym wstawiono komponenty instrukcjami jak niżej? setlayout(new FlowLayout(FlowLayout.CENTER, 5, 5)); JTextArea ta = new JTextArea(); ta.settext("<html><body><font color=\"red\">aaa</font></body></html>"); add(ta); JTextPane tp = new JTextPane(); tp.settext("<html><body><font color=\"red\">aaa</font></body></html>"); add(tp); a) Panel się nie pojawi, bo w powyższym kodzie jest błąd (źle zredagowany ciąg znaków w metodzie settext) b) c) d)

21. Jak wygląda ramka, na którą wstawiono panel skonstruowany metodami jak niżej? setlayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); JButton btn1 = new JButton("Jeden"); c.fill = GridBagConstraints.HORIZONTAL; c.gridwidth = 2; c.gridx = 1; c.gridy = 0; add(btn1, c); c = new GridBagConstraints(); JButton btn2 = new JButton("Dwa"); c.gridx = 1; c.gridy = 1; add(btn2, c); c = new GridBagConstraints(); JButton btn3 = new JButton("Trzy"); c.fill = GridBagConstraints.HORIZONTAL; c.gridx = 2; c.gridy = 1; add(btn3, c); c = new GridBagConstraints(); JButton btn4 = new JButton("Cztery"); c.fill = GridBagConstraints.VERTICAL; c.gridheight = 2; c.gridx = 3; c.gridy = 0; add(btn4, c); a) b) c) d)

22. Co można powiedzieć o poniższym kodzie? class R extends Thread { R(Runnable t) { new Thread(t).start(); // 1 public void run() { try { join(); catch (InterruptedException e) { public static void main(string args[]) { R r = new R(() -> System.out.println("T")); // 2 r.start(); a) Jego kompilacja nie uda się. Błąd wystąpi w linii 1 lub linii 2 (tj. w którejś z nich) b) Jego kompilacja i uruchomienie metody main powiedzie się: na ekranie zostanie wypisanie T, po czym program zakończy swojego działanie. c) Jego kompilacja i uruchomienie metody main powiedzie się: na ekranie zostanie wypisanie T, jednak program nie zakończy swojego działania. d) Jego kompilacja i uruchomienie metody main powiedzie się: na ekranie nic się nie pojawi, a program zakończy swoje działanie.

23. Co można powiedzieć o poniższym fragmencie kodu przy danych definicjach klas B, Prod, Cons? B b = new B(); Prod p = new Prod(b); Cons c = new Cons(b); c.start(); p.start(); class B { double pole = 12.0; class Prod extends Thread { private B b = null; Prod(B b) { this.b = b; public void run() { while(true){ synchronized(b.pole){ b.pole = Math.random(); class Cons extends Thread { private B b = null; Cons(B b) { this.b = b; public void run() { while(true){ synchronized(b.pole){ System.out.println(b.pole); a) Jego kompilacja i uruchomienie powiedzie się. Powstaną dwa wątki, które będą zmieniać i odczytywać wartość b.pole wzajemnie się przy tym wykluczając (iteracje w pętli while będą wykonywać się na zmianę, raz jednego wątku, raz drugiego) b) Jego kompilacja i uruchomienie powiedzie się. Powstaną dwa wątki, które będą zmieniać i odczytywać wartość b.pole wzajemnie się przy tym wykluczając (iteracje w pętli while będą mogły powtórzyć się kilka razy zanim dojdzie do wykluczenia) c) Jego kompilacja i uruchomienie powiedzie się. Powstaną dwa wątki, które zakleszczą się (program wypisze kilka wartości, a potem zawiesi się ). d) Jego kompilacja zakończy się błędem

24. Co można powiedzieć o poniższym kodzie? import java.util.random; class B { public static String s = "Ala"; class W extends Thread { private static Random r = new Random(); W(String s) {super(s); // 1 public void run() { while (true) { synchronized (B.s) { // 2 B.s = this.getname()+ // 3 Long.toString(Math.abs(r.nextLong()), 36); System.out.println(B.s); public static void main(string[] s) { new W("A").start(); new W("B").start(); a) Jego kompilacja i wykonanie metody main powiedzie się b) Jego kompilacja zakończy się błędem w linii 1 c) Jego kompilacja zakończy się błędem w linii 2 d) Jego kompilacja zakończy się błędem w linii 3

25. Co można powiedzieć o poniższym kodzie? class C { class B { static int x = 10; // 1 public static void main(string[] args) { C.B obj = new C().new B(); // 2 int i = obj.x + 2; // 3 a) Jego kompilacja i uruchomienie powiedzie się b) Podczas kompilacji wystąpi błąd w linii 1 c) Podczas kompilacji wystąpi błąd w linii 2 d) Podczas kompilacji wystąpi błąd w linii 3

26. Co można powiedzieć o klasie A (zakładając, że wszystkie konieczne importy zostały dokonane)? static BufferedReader instream; static Socket s1, s2; public static void main(string[] args) throws UnknownHostException, IOException { new Thread(() -> { try { s1 = new ServerSocket(2000).accept(); instream = new BufferedReader(new InputStreamReader(s1.getInputStream())); System.out.println(instream.readLine()); catch (Exception ex) { System.out.println("Exception"); ).start(); s2 = new Socket("localhost", 2000); s2.close(); a) Jej kompilacja i uruchomienie metody main powiedzie się. Program zakończy się, a na ekranie pojawi się Exception b) Jej kompilacja i uruchomienie metody main powiedzie się. Program zakończy się, a na ekranie pojawi się null c) Jej kompilacja powiedzie się. Po uruchomieniu metody main ekran pozostanie pusty, a program nie skończy swojego działania. d) Jej kompilacja zakończy się błędem

27. Co można powiedzieć o klasie A (zakładając, że wszystkie konieczne importy zostały dokonane)? class A { public static void main(string[] args) { Socket so; try { so = new Socket("192.168.75.94", 2000); // 1 ObjectInputStream out = new ObjectInputStream(so.getInputStream()); Integer i = out.readobject(); // 2 System.out.println(i); // 3 catch (Exception e) { a) Jej kompilacja powiedzie się b) Jej kompilacja zakończy się błędem w linii 1 c) Jej kompilacja zakończy się błędem w linii 2 d) Jej kompilacja zakończy się błędem w linii 3

28. Co można powiedzieć o poniższym kodzie (przy założeniu, że odpowiednie importy zostały wykonane i klasy znajdują się w osobnych plikach)? public interface I extends Remote { default void m() throws RemoteException { System.out.println("A"); // 1 public class A extends UnicastRemoteObject implements I { // 2 public static void main(string[] args) { try { LocateRegistry.createRegistry(1099).rebind("A", new A()); // 3 catch (RemoteException e) { public class B { public static void main(string[] args) { try { ((I) LocateRegistry.getRegistry(1099).lookup("A")).m(); // 4 catch (RemoteException NotBoundException e) { a) Jego kompilacja i uruchomienie powiedzie się, jeśli najpierw zostanie uruchomiona metoda main klasy A, a potem metoda main klasy B. Tylko wtedy zdalnie uruchomiona zostanie metoda m(). b) Podczas kompilacji wystąpi błąd w linii 1 c) Podczas kompilacji wystąpi błąd w linii 2 d) Podczas kompilacji wystąpi błąd w liii 3 lub 4 (tzn. którejś z nich)

29. Co można powiedzieć o poniższym kodzie (przy założeniu, że odpowiednie importy zostały wykonane i klasy znajdują się w osobnych plikach)? interface I extends Remote { default void m() throws RemoteException { System.out.println("A"); // 1 public class A implements I, Serializable { // 2 public static void main(string[] args) { try { LocateRegistry.createRegistry(1099).rebind("A", new A()); // 3 Thread.sleep(50000); catch (RemoteException InterruptedException e) { public class B { public static void main(string[] args) { try { ((A) LocateRegistry.getRegistry().lookup("A")).m(); // 4 catch (RemoteException NotBoundException e) { a) Jego kompilacja i uruchomienie powiedzie się, jeśli najpierw zostanie uruchomiona metoda main klasy A, a potem metoda main klasy B. Jednak uruchomienie metody m()będzie lokalne. b) Podczas kompilacji wystąpi błąd w linii 1 c) Podczas kompilacji wystąpi błąd w linii 2 d) Podczas kompilacji wystąpi błąd w liii 3 lub 4 (tzn. którejś z nich)

30. Zakładając, że w jakiejś aplikacji poprawnie wykonała się poniższa linia kodu (namiastka jest obiektem pozwalającym odpalić zdalnie zaimplementowane gdzieś metody interfejsu I) LocateRegistry.createRegistry(1099).rebind("A", namiastka); // 1 to co można powiedzieć o poniższym kodzie (przy założeniu, że odpowiednie importy zostały wykonane i klasy znajdują się w osobnych plikach)? public interface I extends Remote { void m() throws RemoteException; public class B { public static void main(string[] args) { try { ((I) Naming.lookup("rmi://localhost:1099/A")).m(); // 2 catch (RemoteException MalformedURLException NotBoundException e) { a) Jego kompilacja i uruchomienie powiedzie się (metoda m zostanie wywołana zdalnie) b) Jego kompilacja powiedzie się, jednak po uruchomieniu metody main klasy B nie dojdzie do zdalnego wywołania metody m (do bloku catch przekazany zostanie wyjątek) c) Aby kompilacja i zdalne wywołanie metody m podczas uruchomienia metod main klasy B powiodło się kod w linii 2 musi zostać zastąpiony poniższym kodem ((I) Naming.lookup("A")).m(); d) Jego kompilacja i zdalne wywołanie metody m w metodzie main powiedzie się, jeśli kod w linii 1 zostanie zastąpiony poniższym kodem LocateRegistry.createRegistry(1099).rebind("rmi://localhost:1099/A", namiastka);