Kezdőoldal » Számítástechnika » Programozás » Java, saját osztály importálása?

Tabaki kérdése:

Java, saját osztály importálása?

Figyelt kérdés

Ma lenne a napja, hogy belekezdjek a Java tanulásába, de máris bénázom. A könyvem szerint igy hívhatnék be egy lefordított osztályt:

import KutyaFule;

...viszont ez a fordításkor hibaüzenettel leáll. Egy letöltött példaprogram így kezdődik:


import java.awt.*;

import java.awt.event.*;

import OvalButton;


Geany-ből fordítva ezt írja ki:


javac "RoundTeszt.java" (/home/tabaki/prog/java/toltott/ovalbutton könyvtárban)

RoundTeszt.java:3: error: '.' expected

import OvalButton;

^

RoundTeszt.java:3: error: ';' expected

import OvalButton;

^

Fordítás sikertelen.

2 errors


Terminálban:

tabaki@tabaki-Lenovo-G580 ~/prog/java/toltott/ovalbutton $ javac RoundTeszt.java

RoundTeszt.java:3: error: '.' expected

import OvalButton;

^

RoundTeszt.java:3: error: ';' expected

import OvalButton;

^

2 errors


Mi a baj? Miféle pontot, pontosvesszőt hiányol? Maga a hivatkozott OvalButton osztály hibaüzenet nélkül lefordul.


(Linux Mint, OpenJDK, de ilyesmit csinált az Oracle-Javával is.)



2013. nov. 24. 20:41
 1/5 anonim ***** válasza:
78%

Nem osztályokat, hanem csomagokat importálhatsz. Készíts egy könyvtárat, valami csomag néven, abba tedd be az OvalButtont, majd annak első sorába írd be ezt:

package csomag;

ahol pedig használni akarod, ott:

import csomag.OvalButton;

Egy másik lehetőség, hogy nem importálod, hanem ugyanabba a könyvtárba teszed, ahol a main van, és máris hivatkozható import nélkül. Bár ez inkább ellenjavallt, viszont kezdetben megteszi.

2013. nov. 24. 21:33
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:

Köszönöm, működik! Előbb-utóbb a logikáját is megértem...

Fordításkor viszont figyelmeztetett valami deprecated API-ra. -Xlint-tel fordítva:


javac -Xlint "OvalButton.java" (/home/tabaki/prog/java/toltott/ovalbutton/OB könyvtárban)

OvalButton.java:6: warning: [serial] serializable class OvalButton has no definition of serialVersionUID

public class OvalButton extends Component {

^

1 warning

Fordítás sikerrel lezárult.


Ez mit jelent? Jól értem, hogy a példa valami divatjamúlt megoldást alkalmaz, de a fordító amúgy rendjén teszi a dolgát? Ha ez a helyzet, majd keresek naprakészebb szakirodalmat, ezt a fene tudja, honnét ástam elő.

2013. nov. 24. 22:03
 3/5 anonim ***** válasza:

Az osztályod Serializable (ezt az interfészt implementálja, akár implicit, akár explicit módon, vagyis extendáltál valamit, ami implementálja a Serializable -t)


az ilyen osztályoknak tartalmazniuk kell ez serialVersionUID nevű adattagot:



private static final long serialVersionUID = 1234567890123456789L;


Az értéke általában generált.


Használj valamilyen IDE -t, pl az eclipse -et (az eclipsePONTorg -ról letöltheted), nagyon sokat segít a munkában és némi megfigyelőképességgel gyorsabban is tanulhatsz, anélkül, hogy ilyen apró részleteken fenn kéne akadnod.

2013. nov. 25. 17:42
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:
Köszönöm, megpróbálom.
2013. nov. 25. 22:48
 5/5 A kérdező kommentje:

Ide nem tartozó próba:

#include <stdio.h>


float kamat(float x){

      float y = (0.1 * x) + x;

      printf("A kamat(%f) függvényben vagyok...      y = %f\n", x, y);

      return y;

}


int main(){

      float x;

      printf("Kérem x értékét: ");

      scanf("%f", &x);

      printf("A főprogramban vagyok...        kamat(%f) = %f", x, kamat(x));

      return 0;

}

2020. szept. 30. 21:59

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!