Słowo VOID z Javie

0

Czy mógły by ktoś wytłumaczyć wyczerpująco, a jednocześnie jak krowie na rowie DLACZEGO i PO CO i W JAKICH OKOLICZNOŚCIACH używa się słowa "void" w programowaniu obiektowym w javie?

Thank you from the mountain!

1

Void nie zwraca wartości. End of story

5

W teorii aby poinformować kompilator, że z funkcji nie będzie zwracana żadna wartość. W praktyce aby uprzykrzyć sobie i innym programistom życie.

4
  1. Słowo void używane jest w deklaracji metody.
  2. Słowo void oznacza, że metoda nie zwróci żadnej wartości
  3. W takiej metodzie próba zwrócenia czegokolwiek spowoduje błąd kompilacji
  4. Próba uzyskania wyniku z takiej metody spowoduje błąd kompilacji

Przykłady:
Odnośnie punktu 3 - taki kod się nie skompiluje:


class Main {
	public static void dupa() {
		return 3;
	}

	public static void main(String... args) {
		System.out.println("Hello world!");

	}
}

Odnośnie punktu 4 - taki kod się nie skompiluje:

class Main {
	public static void dupa() {}

	public static void main(String... args) {
		System.out.println("Hello world!");
		int dupa = dupa();
		System.out.println("Hello dupa " + dupa);
	}
}

0

dzięki za odpowiedzi i przykłady z d**y !

0

@PerlMonk: A wyświetlanie łańcucha tekstu za pomocą sout nie jest traktowane przez komp jako wartość tak?

1

Cos z sygnatura void de facto jest imperatywna instrukcja, ktora wywoluje skutki uboczne (np. zapis do bazy danych, wypisanie cos na konsole, wysuniecie stacji dyskow, ...) a nie wartoscia.

0

@Michał Sikora: a co byś zwrócił w metodzie info dla loggera?

1
AnnDeveloper845 napisał(a):

@PerlMonk: A wyświetlanie łańcucha tekstu za pomocą sout nie jest traktowane przez komp jako wartość tak?

Jeśli pytasz o podane przeze mnie przykłady, to już pisałem - one się nie skompilują.
Jeśli pytasz o

System.out.println("Hello world!");

to taka instrukcja jest ok. Przyjmuje ona napis i nie zwraca nic.

1
scibi92 napisał(a):

@Michał Sikora: a co byś zwrócił w metodzie info dla loggera?

Nie kazdy void jest zly. Nawet w funkcyjnych jezykach uzywa sie unit'ow. Wiekszy problem to mutowalnosc stanu aplikacji tam gdzie nie jest to tak na prawde potrzebne :)

0

@stivens: no zgadzam się w 100%. Po prostu to nie jest problem istnienie voida tylko tego że programiści są słabi i robię mutowanie. Ale trudno żeby log.info czy System,out.println zwracało coś sensownego co nie jest voidem/unit-em etc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1