abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 16:55 | Zajímavý software

    pico-usb-wifi je open source firmware pro Raspberry Pi Pico W, který jej promění v USB Wi-Fi adaptér. Po připojení k počítači se objeví jako zařízení USB CDC-NCM.

    Ladislav Hagara | Komentářů: 0
    včera 16:00 | IT novinky

    Americká společnost Google ze skupiny Alphabet bude muset podle nových požadavků Evropské unie umožnit společnosti OpenAI i dalším konkurentům v oblasti umělé inteligence (AI) a internetových vyhledávačů přístup ke svým službám. Ve svém rozhodnutí o tom včera informovala Evropská komise (EK). Opatření má zajistit dodržování pravidel, jejichž cílem je omezit v EU tržní sílu velkých technologických firem. Google s tím nesouhlasí.

    … více »
    Ladislav Hagara | Komentářů: 0
    včera 04:55 | Komunita

    Nové verze webových prohlížečů Chrome a Firefox jsou vydávány každé 4 týdny. Aktuální verze Chrome je 150. Aktuální verze Firefoxu je 152. V březnu bylo oznámeno, že od září přejde Chrome na dvoutýdenní cyklus vydávání verzí. To by znamenalo, že Chrome v číslování verzí Firefox brzy přeskočí. Vývojáři Firefoxu proto také od září přecházejí na dvoutýdenní cyklus vydávání verzí. :-)

    Ladislav Hagara | Komentářů: 3
    včera 00:22 | Zajímavý software

    Microsoft Comic Chat (Wikipedie), tj. grafický IRC klient z devadesátek, který převáděl konverzace na IRC do podoby komiksových panelů, a který zpopularizoval font Comic Sans, je dnešním dnem open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 1
    16.7. 19:55 | Nová verze

    Byla vydána (𝕏) nová verze 26.7 open source firewallové a routovací platformy OPNsense (Wikipedie). Jedná se o fork pfSense postavený na FreeBSD. Kódový název OPNsense 26.7 je Xenial Xenops. Přehled novinek v příspěvku na fóru.

    Ladislav Hagara | Komentářů: 0
    16.7. 14:44 | IT novinky

    Na Seznam nepovolených internetových her (Wikipedie) se k 13. 7. 2026 dostala predikční platforma Polymarket.

    Ladislav Hagara | Komentářů: 5
    16.7. 14:22 | Zajímavý článek

    Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 167 (pdf) a Hello World 30 (pdf).

    Ladislav Hagara | Komentářů: 0
    16.7. 00:44 | Nová verze

    Byla vydána nová verze 3.22.0 grafického vývojového prostředí a platformy Gambas (Wikipedie) založené na interpretru programovacího jazyka Basic s rozšířením o objektově orientované programování. Přehled novinek v poznámkách k vydání. Zdrojové kódy jsou k dispozici na GitLabu.

    Ladislav Hagara | Komentářů: 0
    15.7. 20:22 | Komunita

    FreeBSD odstranilo poslední GPL kód ze základního systému. Konkrétně dpv, libdpv, libfigpar a dialog. Instalátor před čtyřmi lety přešel z dialogu na bsddialog.

    Ladislav Hagara | Komentářů: 2
    15.7. 15:22 | IT novinky

    Sociální síti 𝕏 (dříve Twitter) má dnes 20 let. Pro veřejnost byla zpřístupněna 15. července 2006.

    Ladislav Hagara | Komentářů: 2
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (7%)
     (2%)
     (17%)
     (31%)
     (4%)
     (6%)
     (2%)
     (15%)
     (25%)
    Celkem 2156 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Dotaz: java problém s voláním metody, static fields...

    4.5.2011 23:10 ttff
    java problém s voláním metody, static fields...
    Přečteno: 557×
    mám aplikaci, v appView píšu kód, pak mám vlastní třídu s metodou, jenž je static. Potřebuju z té static metody volat appView metodu, která sahá na jList.

    Problém je, že ať už mám v méTřídě jakoukoliv metodu nemohu z ní volat GUI prvky (jsou private), musím volat tu mou metodu v appView. Jenomže ať už je má metoda v méTřídě static nebo ne, píše mi to, že: non-static method máMetoda() cannot be referenced from a static context

    v C# jsem to řešil, že jsem ListBox udělal public. Co v Javě?

    Řešení dotazu:


    Odpovědi

    5.5.2011 01:27 Mips
    Rozbalit Rozbalit vše Re: java problém s voláním metody, static fields...
    Ten popis není zrovna nejsnazší k pochopení, ale myslím, že jsem pochopil, o co jde. Máte třídu AppView a v ní instanční proměnnou (field) nazvanou jList. Máte taky třídu MyClass a v ní metodu doSomethingWithJList(), pomocí které chcete manipulovat s oním fieldem jList:
    class AppView {
    
        private JList jList;
    
        public List<Object> getItems() {
            //má něco dělat s jListem, který je z ostatních tříd nepřístupný
        }
        
    }
    public class MyClass {
    
        public static void myMethod() {
            //odtud se má něco udělat s JListem ze třídy AppView
        }
    
    }

    A ono to nejde a nevíte, jak na to.

    On je totiž problém s tím statickým kontextem, jak píše chybová hláška.

    Začnu trochu zeširoka:
    Když chcete číst či zapisovat nestatický field, musíte specifikovat instanci třídy, jejíž field chcete číst či zapisovat. Tuto instanci specifikujete:

    • buď explicitně pomocí tečkové notace:
      referenceNaInstanci.názevFieldu
    • nebo, není-li reference na instanci specifikována, implicitně z kontextu, ve kterém se k tomuto fieldu snažíte přistoupit

    Přistupujete-li k fieldu z nestatické metody, znamená to, že sama tato nestatická metoda byla volána na nějaké instanci, jinak řečeno v kontextu nějaké instance.
    Přistupujete-li k fieldu ze statické metody, tato metoda není volána v kontextu žádné instance (neboli je volána ve statickém kontextu) a tudíž nemůže být implicitně dána instance třídy, k jejímuž nestatickému fieldu chcete přistoupit.

    Zpátky k vašemu příkladu:

    Field AppView.jList je instanční proměnná (field), tudíž, chcete-li k ní přistupovat, musí být specifikována instance třídy AppView. Jestliže k ní přistupujete bez tečkové notace z metody getItems(), pak se tato instance převezme z kontextu metody getItems(). Aby metoda getItems() měla nějaký nestatický kontext (a ona ho musí mít, protože je nestatická), musí se volat buď pomocí tečkové notace (instanceAppView.getItems()) nebo musí být volána z nestatického kontextu třídy AppView (tedy z nestatické metody třídy AppView či jejího potomka).

    Vy se ale zřejmě snažíte metodu getItems() volat způsobem, který žádnou instanci třídy AppView nespecifikuje.

    Tím, že metodu myMethod() uděláte nestatickou, si jen vynutíte, že tato metoda musí být volána v kontextu instance třídy MyClass. Ale vy potřebujete instanci třídy AppView.

    Řešení:
    Rozmyslete si, s jakou instancí třídy AppView chcete pracovat a kdy a jak ji vytvoříte. Jakmile budete tuto instanci mít, můžete ji specifikovat jako kontext pro metodu AppView.getItems(), potažmo pro field AppView.jList.

    5.5.2011 23:37 ttff
    Rozbalit Rozbalit vše Re: java problém s voláním metody, static fields...
    klobouk dolu a díky!
    5.5.2011 08:21 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: java problém s voláním metody, static fields...
    V tomhle vám pomůže jedině nastudovat si základy objektového programování. Pro Javu doporučuju Učebnice jazyka Java od Pavla Herouta.
    5.5.2011 09:59 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: java problém s voláním metody, static fields...
    Spíš základy designu aplikace.
    In Ada the typical infinite loop would normally be terminated by detonation.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.