⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filetreeclassloadermanager.java

📁 树形的java classloader,树形的java classloader,树形的java classloader,
💻 JAVA
字号:
package org.codehaus.classloader;

import java.io.File;
import java.io.FileFilter;
import java.net.URL;
import java.util.Arrays;
import java.util.Iterator;

/**
 * This class loader manager loads class in a directory using a hierarchical rule. i.e.
 * classes under the same folder take precedence over those in parent or sibling directories.
 * <p>
 * This is ideal for managing jar files that have dependencies on different version of the same library.
 * <p>
 * @author Ben Yu
 * Aug 2, 2006 7:00:51 PM
 */
public class FileTreeClassLoaderManager extends AbstractTreeClassLoaderManager {
  private final ClassLoader parent;
  private final File dir;
  private final FileFilter filter;
  private final FilesIterable iterable = new FilesIterable();
  private final URL[] base;
  public FileTreeClassLoaderManager(URL[] base, File file, FileFilter filter) {
    this(ClassLoader.getSystemClassLoader(), base, file, filter);
  }
  public FileTreeClassLoaderManager(URL[] base, File file) {
    this(ClassLoader.getSystemClassLoader(), base, file);
  } 
  public FileTreeClassLoaderManager(ClassLoader parent, URL[] base, File file, FileFilter filter) {
    this(NilClassLoaderManager.instance(), parent, base, file, filter);
  }
  public FileTreeClassLoaderManager(ClassLoader parent, URL[] base, File file) {
    this(parent, base, file, MayBeClassSource.defaultInstance());
  } 
  protected FileTreeClassLoaderManager(ClassLoaderManager up, ClassLoader parent, 
      URL[] base,
      File dir, FileFilter filter) {
    super(up);
    this.parent = parent;
    this.base = base;
    this.dir = dir;
    this.filter = filter;
  }

  public File getDir() {
    return dir;
  }

  protected Iterator children() {
    if(!dir.isDirectory()){
      return NilIterator.instance();
    }
    else{
      final File[] subfiles = dir.listFiles(filter);
      Arrays.sort(subfiles, NewerFileFirst.instance());
      return iterable.iterateFiles(this, parent, base, subfiles, filter);
    }
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -