Java dzielenie zmiennej między klasami.

0

Mam przykładową klasę z zmienną boolean i chciałbym aby inna klasa mogła odczytać stan tamtej zmiennej np.

public class coś {

     public static void main(String[] args) {
         //jakiś kod  
         boolean CUŚ = true;
     }
}

I drugą klasę która ma odczytać stan boolean.

public class Coś2{

    public static void  main(String[] args ) {

        if (CUŚ) {
        //kod
        }
    }
}

Jak popełniłem powyżej jakieś błedy w Java to przepraszam.
Za ortografię też przepraszam.

2

Static class

5
  1. Musisz najpierw zrozumieć różnicę między KLASĄ a OBIEKTEM
  2. Musisz zrozumieć co to jest zasięg zmiennych. Taka zmienna utworzona wewnątrz metody ginie zaraz po tym jak metoda się zakończy.

Co więcej, w jednym programie możesz mieć tylko jeden main() więc i tak twój kod nie bardzo ma sens. Napisz konkretnie jaki problem próbujesz rozwiązać, bo póki co wszystko robisz źle.

0

@Shalom: Dobra to postaram się to jakoś opisać.

Chcę aby zmienna (w tym przypadku boolean) utworzona w klasie A mogła być odczytana przez klasę B.

2
Kapixek napisał(a):

Chcę aby zmienna (w tym przypadku boolean) utworzona w klasie A mogła być odczytana przez klasę B.

O ile klasa B jest tzw klasą zagnieżdżoną w klasie A, to jest to możliwe:

LINK

Pytanie czy na pewno wiesz po co tak ma być, bo jak nie,to to prowadzi do kiepskiego kodu, bad practice, etc.

Jeżeli to nie ma być nested class tylko chcesz by jeden "obiekt" miał dostęp do zmiennych drugiego, to powinieneś robić to przez new object oraz gettery i settery.

1

Jesteś pewien że chcesz coś takiego osiągnąć?
Jedną z podstaw dobrego programowania jest bezstanowość.
Zagnieżdżone klasy to też słabe podejście, o ile nie tworzysz własnej biblioteki.

1

Prawie zawsze to, co zamierzasz jest złe.

Lepsze / mniej złe jest ustalenie zależności, może któraś klasa ZALEŻY od drugiej.

Natomiast ogromnie dużo przed tobą co do podstaw.

1

@Kapixek:

Chcę aby zmienna (w tym przypadku boolean) utworzona w klasie A mogła być odczytana przez klasę B.

Nie. To jest klasyczny http://xyproblem.info/ Napisz co chcesz osiągnąć tak ogólnie. Jaki program próbujesz napisać. A nie jakiego technicznego fikołka chcesz w tej chwili wykonać.

Klasa to jest definicja TYPU danych. Tak jak np. String czy Integer. To też są klasy i definiują typ. Co niby w takim kontekście oznacza zmienna utworzona w klasie? Może chodzi o pole OBIEKTU danej klasy?

0

Jeśli dobrze rozumiem, chciałbyś mieć coś w stylu globalnej zmiennej w programie, której stan mógłbyś sobie w różnych miejscach odczytywać. Poczytaj o tym jak robi się w Javie obiekty typu Singleton

3
Kapixek napisał(a):

@Shalom: Dobra to postaram się to jakoś opisać.

Chcę aby zmienna (w tym przypadku boolean) utworzona w klasie A mogła być odczytana przez klasę B.

  1. Klasa = "pies" w sensie gatunek. Jest jeden gatunek "pies", bez względu na liczbę osobników.
    Obiekt klasy pies = osobnik, czyli konkretny "pies" biegający po podwórku.
    Klasa opisuje, jaki ten gatunek jest, czyli np. pies jest ssakiem, pies może szczekać, może wysrać się na wycieraczkę.
    Jeśli pies przekazuje jakąś konkretną wartość - np. zakopuje kość lub zostawia nam namacalną niespodziankę pod schodami - to już nie robi tego gatunek pies, tylko osobnik gatunku pies. Czyli obiekt tej klasy.

  2. Obiekt klasy A może przekazać wartość obiektowi klasy B np. wywołując na nim odpowiednią metodę. Ty chciałbyś używać stanu globalnego, co w języku obiektowym takim jak Java jest niewskazane.

    Przypomina mi się taki rosyjski dowcip o Czukczach - też z psami, więc pasuje. Rosjanin sprzedał Czukczom kamaza. Za jakiś czas znowu z nimi rozmawia i pyta: "jak, przydaje się?". A Czukcze: "bardzo wygodny, w środku nie wieje, reflektory świecą w nocy. Tylko..." "Co, zepsuł się?" "Nie, ale ciężki w cholerę do ciągania, psy zajebiście się męczą". Ty próbujesz ciągnąć kamaza po śniegu i pytasz nas, jakiego użyć zaprzęgu.

    Moglibyśmy ci pokazać, jak uniknąć stanu globalnego i zamiast tego napisać kod obiektowo (czyli użyć Javy prawidłowo), tylko musiałbyś pokazać konkretny przykład, do czego jest ci to potrzebne i co próbujesz osiągnąć.

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