Tym razem nietypowo.
W pewnej firmie tworzono aplikację wielowątkową. W wielu klasach stosowano następujący wzorzec:
- blokady są numerowane, żeby zapobiec deadlockom (zawsze synchronizowanie kolejno na LOCK1, LOCK2,...)

public class Main {

private

Czy z takim rozwiązaniem jest wszystko ok (biorę po plusie i zapraszam do głosowania i dyskusji)

  • Tak, nie widzę problemu. 12.5% (2)
  • Uuuu Panie, kto to panu tak spierdolił? 87.5% (14)

Oddanych głosów: 16

  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

public static void main(String[] args) {
try {
throw new IOException();
} catch (Error | Exception ex) {
handle(ex);
}

Co wypisze

  • Błąd kompilacji 19.4% (7)
  • exception 27.8% (10)
  • ioexception 27.8% (10)
  • throwable 25.0% (9)

Oddanych głosów: 36

  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Mike-Wazowski: W multi-catch czyli tam gdzie podajemy w klauzuli catch więcej niż jeden typ wyjątku oddzielony znakiem | zmienna wyjątku jest typu, który jest najbliższą w hierarchii klasą bazową wspólną dla wszystkich wskazanych tam typów. Dla przykładu z ankiety dla Error i Exception najbliższą klasą bazową jest Throwable czyli ex jest referencją typu Throwable.
Dalej mamy przeładowaną metodę handle i w grę wchodzi dopasowanie przeładowanej wersji metody do wywołania.
  • Odpowiedz
List test = Arrays.asList("1");
test.set(0, "2");
System.out.println(test);

#java #javapuzzle

Co wypisze

  • [1] 0% (0)
  • [2] 60.4% (32)
  • RuntimeException 39.6% (21)

Oddanych głosów: 53

  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

public class NewClass {
public static void main(String[] args) {
Integer[] tab = {1,2,3,4,5};
List list = Arrays.asList(null, null, null);
Integer[] tab2 = list.toArray(tab);
System.out.println(Arrays.toString(tab));

Co wypisze

  • [1, 2, 3, 4, 5] 47.6% (20)
  • [null, null, null, 4, 5] 26.2% (11)
  • [null, null, null] 4.8% (2)
  • [null, null, null, null, 5] 21.4% (9)

Oddanych głosów: 42

  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

public class NewClass {
public static void main(String[] args) {
try {
int i = getTab()[getIndex()];
} catch (Exception e) {
System.out.print("1");

Co wypisze

  • 21 13.0% (6)
  • 31 13.0% (6)
  • 321 43.5% (20)
  • Błąd kompilacji 30.4% (14)

Oddanych głosów: 46

  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Czy to się skompiluje?

class C{}
enum A extends C {
B;
}

Jak wyżej

  • Tak 13.5% (5)
  • Nie 86.5% (32)

Oddanych głosów: 37

  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

public static void main(String[] args) {
StringBuilder sb1 = new StringBuilder("abc");
StringBuilder sb2 = new StringBuilder("abc");
if (sb1 == sb2) {
System.out.print("1");
} else {

Co wypisze

  • 11 16.4% (9)
  • 12 10.9% (6)
  • 21 43.6% (24)
  • 22 29.1% (16)

Oddanych głosów: 55

  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

public class Main {
public static void main(String... args) {
Main m = null;
m.main();
}
}

Wynik to

  • Błąd kompilacji 20.0% (8)
  • RuntimeException 20.0% (8)
  • Error 60.0% (24)

Oddanych głosów: 40

  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@interface: Analogicznie do RuntimeException. Dla odpowiedzi 'RuntimeException' rozumiem całą rodzinę klas dziedziczących z tej klasy a dla Error całą rodzinę klas dziedziczących właśnie z tej klasy - dokładnie java.lang.Error.
  • Odpowiedz
public static void main(String... args) {
System.out.println(getI());
}

public static int getI() {
int i = 0;

Co wypisze?

  • "0" 60.8% (31)
  • "1" 39.2% (20)

Oddanych głosów: 51

  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach