Przeszukaj forum
Pokazuję wyniki dla tagów 'encapsulation'.
Znaleziono 1 wynik
-
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() ?
- 3 odpowiedzi
-
- java
- programowanie
- (3 więcej)