Java, saját osztály importálása?
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.)
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.
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ő.
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.
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;
}
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!