| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「Java パッケージ配下のクラスを取得する」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の2版が非表示)
1行目: 1行目:
==Java パッケージ配下のクラスを取得する==
+
==[[Java パッケージ配下のクラスを取得する]]==
[[Java]]{{category コード片}}
+
[[Java]] | [[Category:コード片]]
  
 
  /**
 
  /**

2022年5月19日 (木) 14:36時点における最新版

Java パッケージ配下のクラスを取得する

Java |

/**
 * @param package getClass().getPackage();
 */
public void getClassesInPackage(Package package) throws Exception {
    final char PACKAGE_SEP = '.';
    final char PACKAGE_RESOURCE_SEP = '/';
    
    String packageName = package.getName();
    String packageResource 
        = packageName.replace(PACKAGE_SEP, PACKAGE_RESOURCE_SEP); 
    
    logger.info("RESOURCE:" + packageResource);
    
    ClassLoader loader = ClassLoader.getSystemClassLoader();
    
    URL resource = loader.getResource(packageResource);
    
    File f = new File(resource.getPath());
    
    for (String file : f.list()) {
        if (file.matches(".*\\.class$")) {
            String className = packageName + PACKAGE_SEP + file.replaceAll("\\.class$","");
            logger.info("CLASS:" + className);
            
            @SuppressWarnings("rawtypes")
            Class cls = Class.forName(className);
            logger.info("OBJECT:" + cls.newInstance());
        }
    }
}