我们都知道java有个 default package
我有这样的一段代码在defualt package  里面有这样一个java文件
public class helloworld {

public static void output(){
System.out.println("hello world!");
}}
我又生成了一个package comm  里面有这样一个java文件
package comm;public class test {

public static void main(String[] args){
 helloworld.output(); //这段代码有问题,他不认识在default package里面的helloworld
}}为什么在comm这个package无法识别default package里面的东西呢,如何才能让他访问default package里面的东西呢?先谢谢了!!

解决方案 »

  1.   

    java中其他包中无法引用缺省包中的类。
    因为默认包的类没有包名, 在被有包结构的类引用时,会被当成本包内的类。即编译器会在comm包下查找helloworld类,自然是找不到的。而由于没有包名,也无法使用import导入。
      

  2.   

    嗯 是 1楼 说对。  是要import 进去啊  不然该类会在它的同包下 找helloworld了。那当然就找不到
      

  3.   

    这个问题有解,可以用最原始的类调用default package下的类,具体方法如下:
    1。加载类
    Class class = Class.forName("被调用类名");
    2。调用类中的方法
    Method method= snmpHandler.getMethod("被调用方法名", new Class[] { 参数列表类型 });
    Object value = method.invoke(class.newInstance(), new String[]{ "参数一","参数二"});
    举个例子,如:想调用的类名为MyClass,其中有方法为String myMethod(String str1,String str2);
    则调用如下:
    Class class = Class.forName("MyClass");
    Method method= snmpHandler.getMethod("myMethod", new Class[] { String.class,String.class });
    String value = method.invoke(class.newInstance(), new String[]{ "str1","str2"});
    ok到此解决该问题