Java ClassLoader definePackage()方法与示例

ClassLoader类definePackage()方法

  • definePackage()方法在java.lang包中可用。

  • definePackage()方法允许类加载器为其类定义包,并且在类加载器中定义的包名称必须唯一。

  • definePackage()方法是一个非静态方法,只能通过类对象访问,如果尝试使用类名称访问该方法,则会收到错误消息。

  • definePackage()方法在定义包时可能会引发异常。
    IllegalArgumentException:当此类加载器或其任何祖先的现有包中已经存在一个包时,可能引发此异常。

语法:

    protected Package definePackage(
        String pack_name , 
        String s_title, 
        String s_version, 
        String s_vendor, 
        String i_title, 
        String i_vendor, 
        String i_version, 
        URL seal_status);

参数:

  • 字符串pack_name –表示软件包的名称。

  • 字符串s_title-表示标题规范。

  • 字符串s_version –表示版本规范。

  • 字符串s_vendor –代表供应商规范。

  • 字符串i_title-表示标题实现。

  • 字符串i_version –表示版本实现。

  • 字符串i_vendor –表示供应商实现。

  • URL seal_status –表示密封状态(即URL不为null时被密封)。

返回值:

该方法的返回类型为Package,它返回一个新创建的包。

示例

//Java程序演示示例 
//ClassLoader的package definePackage()方法的说明 

public class DefinePackageOfClassLoader extends ClassLoader {
    public static void main(String[] args) throws ClassNotFoundException {
        //载入类
        Class cl = Class.forName("java.lang.String");
        //返回String类的包
        Package pack = cl.getPackage();

        //Java库中已经存在java.lang-
        if (pack != null)
            System.out.println(pack.toString() + " already exists!!!!");
        else
            System.out.println("Ready to create a package by using definePackage()");
    }
}

class DefinePackage extends ClassLoader {
    //如果包不存在,那么我们可以创建一个
    //使用definePackage()方法打包
    Package new_package = definePackage("includehelp.java", "Nhooo", "2.0.3", "Microsoft", null, null, null, null);
}

输出结果

package java.lang already exists!!!!