假如有一個類,直接不加package,也就是屬于預設包:
/**
* Created by bo on 2019/7/13.
*/
public class Test {
public int add(int x, int y) {
return x + y;
}
}
另外一個類,處于com包(或者任何非預設包),如何使用上面這個屬于預設包的類?
import *;
import *.*;
import ClassInDefaultPackage;
都不行,IDEA也無法自動引入。
其實,從 J2SE 1.4 開始,Java 編譯器不再支援 import 進未命包名的類、接口。那麼非預設包中的類可以調用預設包裡面的類嗎?答案肯定是可以的,通過反射機制。
package com.iie;
import java.lang.reflect.Method;
/**
* Created by bo on 2019/7/13.
*/
public class PackageClass {
public static void main(String[] args) throws Exception{
Class c = Class.forName("Test");
Method method = c.getDeclaredMethod("add", int.class, int.class);
System.out.println(method.invoke(c.newInstance(), new Integer(10), new Integer(20)));
}
}
運作結果:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLzMDN2AjMyYTMzEzNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)