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

MyMemoWiki

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

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
7行目: 7行目:
 
  public void getClassesInPackage(Package package) throws Exception {
 
  public void getClassesInPackage(Package package) throws Exception {
 
     final char PACKAGE_SEP = '.';
 
     final char PACKAGE_SEP = '.';
     final char PACKAGE_[[R]]ESOU[[R]]CE_SEP = '/';
+
     final char PACKAGE_RESOURCE_SEP = '/';
 
      
 
      
 
     String packageName = package.getName();
 
     String packageName = package.getName();
     String package[[R]]esource
+
     String packageResource
         = packageName.replace(PACKAGE_SEP, PACKAGE_[[R]]ESOU[[R]]CE_SEP);  
+
         = packageName.replace(PACKAGE_SEP, PACKAGE_RESOURCE_SEP);  
 
      
 
      
     logger.info("[[R]]ESOU[[R]]CE:" + package[[R]]esource);
+
     logger.info("RESOURCE:" + packageResource);
 
      
 
      
 
     ClassLoader loader = ClassLoader.getSystemClassLoader();
 
     ClassLoader loader = ClassLoader.getSystemClassLoader();
 
      
 
      
     U[[R]]L resource = loader.get[[R]]esource(package[[R]]esource);
+
     URL resource = loader.getResource(packageResource);
 
      
 
      
 
     File f = new File(resource.getPath());
 
     File f = new File(resource.getPath());

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());
        }
    }
}