我们都知道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里面的东西呢?先谢谢了!!
我有这样的一段代码在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里面的东西呢?先谢谢了!!
因为默认包的类没有包名, 在被有包结构的类引用时,会被当成本包内的类。即编译器会在comm包下查找helloworld类,自然是找不到的。而由于没有包名,也无法使用import导入。
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到此解决该问题