Avatar billede themepark Nybegynder
20. marts 2005 - 15:11 Der er 17 kommentarer og
1 løsning

Import af class filer

Jeg har en række spørgsmål omkring ovenstående:

1. Hvis jeg har lavet en Test.class fil, og nu gerne vil kunne starte den fra en Test2.java fil, hvad skal jeg så skrive i den fil? Jeg bruger Eclipse til det, og de 2 filer ligger i samme mappe, i den package, der hedder (default package) i Eclipse.

2. Hvis jeg starter mit Java program fra en konsol (Xterm, DOS osv.), og jeg i det program har en linje, der skal starte en ny, anden konsol, kan jeg så angive på en eller anden måde, at resten af programmet skal udføres i denne anden konsol, således at alt output havner i den, og ikke i den konsol, jeg startede mit Java program i?

3. I Visual Basic kan man definere sine egne brugerdefinered typer, som f.eks. således.

Type Test
  Dim Tekst as String
End Type

Dim Hello as Test

Og så kan man få fat i Tekst, ved at skrive Hello.Tekst. Kan man gøre noget lignende i Java, men i en og samme Java fil, altså så jeg ikke behøver at importere classes?

F.eks. have en metode TestMethod() der hører med til et eller anden objekt, som også indeholder variable, og så altså oprette en ny instans af det objekt, andetsteds i den samme fil? Pyha, jeg håber, det giver mening...

Venlig hilsen
Michael K. P.
Avatar billede kalp Novice
20. marts 2005 - 15:15 #1
Type Test
  Dim Tekst as String
End Type

så er Tekst af typen String?

hvis ja så gøres det sådan her i Java

String Tekst;

til en String fx.

Ellers forstod jeg det ikke hehe .. de andre kan jeg ikke svare på kender nemlig ikke til Eclipse
Avatar billede arne_v Ekspert
20. marts 2005 - 15:15 #2
Det var mange spørgsmål !

:-)

re 1)

Hvis klasserne ligger i samme package begøver du ikke importere noget for
at bruge dem.

re 2)

Nej. Java er multithreaded, men 2 console vinduer er 2 processer. DU kan naturligvis
lave noget inter process kommunikation.

re 3)

Du kan godt lavere mere end en klasse i en fil. Men du kan kun have en public klasse
i en fil (og den skal hedde det samme som filen).
Avatar billede themepark Nybegynder
20. marts 2005 - 15:31 #3
1. Jeg får nu at vide, når jeg skriver Test(); (altså navnet på min class fil), i min Test2.java fil,  at metoden er udefineret for typen Test. Uden () får jeg en syntax error...damn, jeg føler mig n00b lige nu :(

2. Godt nok, jeg dropper den ide så...så meget er jeg heller ikke inde i Xterm til at kunne det *g*

3. Så hvis jeg laver en class der hedder A f.eks., hvor der bl.a. er en metode der hedder Skriv, vil jeg så i en anden class B, kunne referere til den metode ved at skrive A.Skriv()? Det er nemlig det, der er min hensigt :)
Avatar billede arne_v Ekspert
20. marts 2005 - 15:32 #4
re 3)

Hvis metoden Skriv er static så kan du.
Avatar billede arne_v Ekspert
20. marts 2005 - 15:33 #5
re 1)

Test t = new Test();
t.foo();

hvis ikke static ellers:

Test.bar();

hvis static.
Avatar billede themepark Nybegynder
20. marts 2005 - 15:51 #6
1. Jamen, problemet er at det netop ikke er en metode, det er min class fil, som jeg vil starte, den har kun en main metode.

3. Hmm, jeg er ikke sikker på at man kan dette, men hvis jeg f.eks. ønsker at lave en Farve class. Den har 3 byte, Rød, Blå og Grøn, og så er det min mening, at man kan bruge den f.eks. ved at skrive Farve.Rød, hvorefter man selvfølgelig får værdien for rød tilbage, eller man kan skrive Farve, og så får man en Color tilbage. Men hvis Farve SKAL være en class (det ved jeg så ikke, om det skal være?), kan det så overhovedet lade sig gøre?

Og ja, jeg ved godt, der allerede findes en farve funktion i Java, dette er blot et tænkt eksempel ;)
Avatar billede arne_v Ekspert
20. marts 2005 - 15:55 #7
re 1)

Den kan du vel også kalde på den måde ?

Men hvis du vil have den til at køre seperat så skal du have fat i
Runtime.getRuntime().exec() igen.

re 3)

public class Farve {
  public static byte Rød;
  public static byte Blå;
  public static byte Grøn;
}

(men det er ikke pæn Java !!)
Avatar billede themepark Nybegynder
20. marts 2005 - 16:09 #8
1. Nej, åbenbart ikke, jeg får i hvert fald at vide, at den metode ikke er defineret, men det er jo i virkeligheden min class fil :(

public class Test {
    public static void main(String[] args) {
        Test2();
    }
}

public class Test2 {
    public static void main(String[] args) throws IOException {
//Kode
        }
}

3. Jow...men mit problem gik mere på selve Farve delen, da jeg så gerne ville have, at den så var af typen Color, men jeg er ikke sikker på om man kan det med en class, ej heller på om der er andre måder at gøre det ønskede på?
Avatar billede arne_v Ekspert
20. marts 2005 - 16:12 #9
public class Test2 {
    public static void main(String[] args) throws IOException {
        Test.main(null);
    }
}
Avatar billede arne_v Ekspert
20. marts 2005 - 16:13 #10
public class Farve {
  public static Color Rød;
  public static Color Blå;
  public static Color Grøn;
}

??

(de er i forvejen defineret i Color klasse så den her klasse er helt overflødig)
Avatar billede themepark Nybegynder
20. marts 2005 - 16:21 #11
Ja, men som jeg skrev før, så er det her bare et tænkt eksempel for at belyse, hvor det er jeg vil hen :)

Men nej, de 3 farver skal være bytes, så de kan få en værdi mellem 0 og 255. Det har jeg sådan set ingen problemer med. Mit problem ligger i, at jeg gerne vil have Farve til at være af typen Color. F.eks. (igen, det er et tænkt eksempel, no bitching ;) kunne man ved at skrive Farve(255,0,0) sætte Rød til 255, og Blå og Grøn til 0, og samtidig ville Farve (som netop skal være af typen Color), blive sat til at være den røde farve, så du f.eks. kunne skrive Farve i stedet for Color.red. Problemet er så at jeg, hvis jeg skriver Farve, gerne vil have Color farven returneret, altså rød, men jeg vil også kunne referere til en af grundfarverne ved at skrive Farve.Blå f.eks.

Alt dette er jeg vant til at lave i Visual Basic, jeg har bare INGEN anelse om hvorvidt det kan lade sig gøre med Java :)
Avatar billede arne_v Ekspert
20. marts 2005 - 17:18 #12
public class Farve extends Color {
...
}

måske
Avatar billede themepark Nybegynder
21. marts 2005 - 10:28 #13
Hmm, nej, for jeg vil også gerne kunne gøre det med f.eks. en byte...det handler egentlig bare om at lave en variabel af en eller anden type (byte, string o.l.), som så har undertyper :)
Avatar billede arne_v Ekspert
21. marts 2005 - 11:04 #14
En simpel data type som byte kan ikke have metoder eller ekstra attributter
Avatar billede themepark Nybegynder
21. marts 2005 - 12:06 #15
Damn, hvorfor er det så svært at formulere ens tanker? *g*

Det er egentlig heller ikke selve typen, jeg mener, men variablen, der skal have undervariabler, men det kan man så ikke, hvis variablen er af en simpel type, hører jeg dig sige?
Avatar billede themepark Nybegynder
21. marts 2005 - 12:22 #16
Hmm...det er lige gået op for mig, at det med class måske godt kan bruges i mit tilfælde, såfremt jeg bare skriver det lidt om, kan jeg netop godt bruge extends :) Jeg prøver lige at kigge på det i morgen, og virker det, skal jeg nok dele point ud :)
Avatar billede themepark Nybegynder
22. marts 2005 - 15:47 #17
Yes! Det er endelig lykkedes mig at få det til at virke præcist, som jeg ville have det :D

I stedet for at lave typer har jeg bare, inspireret af dine forslag, og en af mine bøger, lavet mine typer som constructor classes, med metoder, som så er mine typer, som jeg kan kalde på. At der skal () med, er heldigvis en lille bagatel i forhold til det, jeg havde i tankerne :)

Smid et svar, så er der point :)
Avatar billede arne_v Ekspert
22. marts 2005 - 16:38 #18
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester