29. maj 2004 - 21:25Der er
21 kommentarer og 1 løsning
At bruge en klasse uden package declaration
Jeg har et projekt hvor alle klasser ligge i samme package. Jeg ønsker at bruge en klasse som ikke har nogen package declaration. Men javac kan ikke finde klassen. Hvad er galt?
Det ser ca. sådan her ud:
package myPackage public Klasse1 { void test() { Klasse2 x = new Klasse2(); } }
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Igennem JNI bruges en kompileret Windows c .dll som jeg ikke kan ændre. Hvis jeg ligger klassen i min egne package, så får jeg en exception ved første kald. Er det ikke noget med at c-kodens funktionsnavne skal ændres hvis jeg ligger den i en package?
Kan man bruge en klasse uden pakke, fra en klasse i en pakke?
public class Dynno { public Dynno() { } public String dup(String s) { return (s + s); } public static void main(String[] args) throws Exception { Object o = Class.forName("Dynno").newInstance(); Class declarg[] = new Class[1]; declarg[0] = String.class; Method m = o.getClass().getMethod("dup", declarg); Object callarg[] = new Object[1]; callarg[0] = "abc"; String res = (String)m.invoke(o, callarg); System.out.println(res); } }
C:\e4\test>type ..\Dynno.java public class Dynno { public Dynno() { } public String dup(String s) { return (s + s); } }
C:\e4\test>type TestDynno.java package test;
import java.lang.reflect.*;
public class TestDynno { public static void main(String[] args) throws Exception { Object o = Class.forName("Dynno").newInstance(); Class declarg[] = new Class[1]; declarg[0] = String.class; Method m = o.getClass().getMethod("dup", declarg); Object callarg[] = new Object[1]; callarg[0] = "abc"; String res = (String)m.invoke(o, callarg); System.out.println(res); } }
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.