Java9模块化简明例子

个人对Java9的模块化的理解

个人对Java9模块化的简单理解是:模块是 package 的容器,是 package 的上一层。在模块里,可以输出(管理)当前模块哪些包是对外暴露(exports)的。同样的,当前模块需要别的模块,就要引用(requires)进来。

Java9模块化的例子

使用Idea创建一个项目 java-9-module-demo,添加两个模块:
- module-main:主模块
- module-user:用户模块

这个例子将演示模块化的作用和写法,实现了以下功能:
- 主模块需要用户模块中的 User 类。
- 用户模块暴露(输出)了 User 类所在的包,因此主模块可以使用(可以成功 requires)。
- 主模块无法访问用户模块中的 HiddenClass 类,因为用户模块没有输出(exports)这个类所在的包。

项目结构如下图所示:

java-9-module-demo

主类

package main;

import user.User;

/**
 * 主类
 *
 * @author Zebe
 */
public class Main {

    /**
     * 运行入口
     *
     * @param args 运行参数
     */
    public static void main(String[] args) {
        // 调用 module-user 模块中的 User 类
        User user = new User();
        user.sayHello();
    }

}

用户类

package user;

/**
 * 用户类
 *
 * @author Zebe
 */
public class User {

    /**
     * 打招呼
     */
    public void sayHello() {
        System.out.println("hello, 我是 module-user 模块 user 包里面的 User 类!");
    }

}

隐藏类

package invisible;

/**
 * 隐藏类
 *
 * @author Zebe
 */
public class HiddenClass {

    public void test() {
        System.out.println("Test");
    }

}

主模块信息定义

/**
 * module-main 主模块信息定义
 * @author Zebe
 */
module module.main {
    // 需要 module-user 模块
    requires module.user;

}

用户模块信息定义

/**
 * module-user 用户模块信息定义
 * @author Zebe
 */
module module.user {
    // 输出(对外暴露)整个 user 包
    exports user;
    //exports invisible;
}

小结

眼过千遍,不如手过一遍。对于编程的学习,在于积累和不断的练习。

原文链接:加载失败,请重新获取