0
0

More than 1 year has passed since last update.

module

Posted at

exportsは公開。
opensは非公開、reflectionのみ可能
requiresでモジュール取り込み

以下のサンプルは、
ParentProject side、opensでreflection可能し、Factoryを公開、
ChildProject side、requiresし、invoke。

なお、other-projectはnetbeansでbuild-timeに出力されるjarをお互いにbuild-pathにいれてある。これによりモジュールとして参照ができるようになる

ParentProject/default-package.module-info.java
module ParentModule {
    opens parentproject to ChildModule;
    exports publicpackage;
}
ParentProject/parentproject.ParentProject.java
public class ParentProject {
    public static void main(String[] args) {
        new ParentProject().method();
    }
    public void method() {
        System.out.println(" i am parentproject method");
    }
}
ParentProject/publicpackage.Factory.java
public class Factory {
    public static ParentProject create() {
        return new ParentProject();
    }
}
ChildProject/default-package.module-info.java
module ChildModule {
    requires ParentModule;
}
ChildProject/chileproject.ChildProject.java
public class ChildProject {
   public static void main(String[] args) {
        Object o = Factory.create();
        try{
            Method m = o.getClass().getMethod("method");
            m.invoke(o);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

実行結果

 i am parentproject method
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0