天天看點

java中import預設包中的類

假如有一個類,直接不加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)));
    }

}
           

運作結果:

java中import預設包中的類