Skocz do zawartości

jasnoksieznik

Członkowie
  • Postów

    2
  • Dołączył

  • Ostatnio

    Nigdy

jasnoksieznik's Achievements

Newbie

Newbie (1/14)

0

Reputacja

  1. Tak jest. Nie zauwazylem, ze run jest metoda, a nie oddzielna klasa. A tak generalnie, to jaki jest sens przekazywania config'a jako parametru, skoro w programie jest tylko jedna konfiguracja i jest ona przechowywana w statycznej klasie Configuration? Nie mozna zalozyc, ze ona po prostu jest i sie do niej odwolywac wprost?
  2. Z robotniczym pozdrowieniem! Przeglądam kod dołączony do JDK 8 i znalazłem tam forkjoin -> mergesort. Gołym okiem widzę, jak program dobiera się do atrybutów prywatnych objektu. Jak to możliwe, że to działa? Wg. mnie to nie powinno się dać skompilować. Tenże MergeSort robi co następuje: public static void main(String[] args) { Configuration configuration = Configuration.parse(args); if (configuration == null) { System.exit(1); } System.out.println(configuration); new MergeDemo().run(configuration); } Jeśli się przyjrzeć MergeDemo.run: private void run(Configuration config) { Range sizes = config.sizes; Range parallelism = config.parallelism; // Tu program robi dalsze rzeczy, nieistotne dla problemu } } Tymczasem objekt Configuration jest zdefiniowany: private static class Configuration { private final Range sizes; private final Range parallelism; private Configuration(Range sizes, Range parallelism) { this.sizes = sizes; this.parallelism = parallelism; } public static Configuration parse(String[] args) { // standardowy parser z lini poleceń } } Moim problemem jest dostęp do config.sizes i config.parallelism - dlaczego mogą one zostać wywołane z MergeDemo.run, skoro są zadeklarowane jako private? Nie muszą być public, albo przez public Range getSizes() ?
×
×
  • Utwórz nowe...