黑马程序员:工具类获取指定包名下的所有类_黑马程序员学费多少

其他范文 时间:2020-02-28 22:05:59 收藏本文下载本文
【www.daodoc.com - 其他范文】

黑马程序员:工具类获取指定包名下的所有类由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“黑马程序员学费多少”。

分享一个获取指定包名下所有类的工具类,代码如下

1.2.3.4.5.6.7.8.9.import java.io.File;import java.io.FileFilter;

import java.lang.annotation.Annotation;import java.net.JarURLConnection;import java.net.URL;

import java.util.ArrayList;import java.util.Enumeration;import java.util.List;

import java.util.jar.JarEntry;

10.import java.util.jar.JarFile;11.12.public cla ClaUtil { 13.// 获取指定包名下的所有类 14.public static List> getClaList(String packageName, boolean isRecursive){

15.List> claList = new ArrayList>();16.try { 17.Enumeration

urls

= Thread.currentThread().getContextClaLoader().getResources(packageName.replaceAll(“.”, “/”));

18.while(urls.hasMoreElements()){ 19.URL url = urls.nextElement();20.if(url!= null){

21.String protocol = url.getProtocol();22.if(protocol.equals(“file”)){

23.String packagePath = url.getPath();

24.addCla(claList, packagePath, packageName, isRecursive);

25.} else if(protocol.equals(“jar”)){ 26.27.28.JarURLConnection jarURLConnection =(JarURLConnection)url.openConnection();

JarFile

jarFile

= jarURLConnection.getJarFile();

Enumeration jarEntries = jarFile.entries();

29.while(jarEntries.hasMoreElements()){

30.JarEntry jarEntry = jarEntries.nextElement();

31.String jarEntryName = jarEntry.getName();32.if(jarEntryName.endsWith(“.cla”)){ 33.String

claName

= jarEntryName.substring(0, jarEntryName.lastIndexOf(“.”)).replaceAll(“/”, “.”);

34.{

if(isRecursive || claName.substring(0, claName.lastIndexOf(“.”)).equals(packageName))35.claList.add(Cla.forName(claName));

36.} 37.} 38.} 39.} 40.} 41.}

42.} catch(Exception e){ 43.e.printStackTrace();44.}

45.return claList;46.} 47.48.// 获取指定包名下的所有类(可根据注解进行过滤)49.public static List> getClaListByAnnotation(String packageName, Cla annotationCla){

50.List> claList = new ArrayList>();51.try { 52.Enumeration

urls

= Thread.currentThread().getContextClaLoader().getResources(packageName.replaceAll(“.”, “/”));

53.while(urls.hasMoreElements()){ 54.URL url = urls.nextElement();55.if(url!= null){

56.String protocol = url.getProtocol();57.if(protocol.equals(“file”)){

58.String packagePath = url.getPath();

59.addClaByAnnotation(claList, packagePath, packageName, annotationCla);

60.} else if(protocol.equals(“jar”)){ 61.62.63.JarURLConnection jarURLConnection =(JarURLConnection)url.openConnection();

JarFile

jarFile

= jarURLConnection.getJarFile();

Enumeration jarEntries = jarFile.entries();

64.while(jarEntries.hasMoreElements()){ 65.JarEntry

jarEntry

= jarEntries.nextElement();

66.String jarEntryName = jarEntry.getName();67.if(jarEntryName.endsWith(“.cla”)){ 68.String

claName

= jarEntryName.substring(0, jarEntryName.lastIndexOf(“.”)).replaceAll(“/”, “.”);

69.70.Cla cls = Cla.forName(claName);

if(cls.isAnnotationPresent(annotationCla)){

71.claList.add(cls);72.} 73.} 74.} 75.} 76.} 77.}

78.} catch(Exception e){ 79.e.printStackTrace();80.}

81.return claList;82.} 83.84.private static void addCla(List> claList, String packagePath, String packageName, boolean isRecursive){

85.try {

86.File[] files = getClaFiles(packagePath);

87.if(files!= null){

88.for(File file : files){

89.String fileName = file.getName();90.if(file.isFile()){

91.String claName = getClaName(packageName, fileName);

92.claList.add(Cla.forName(claName));93.} else {

94.if(isRecursive){ 95.96.97.String subPackagePath = getSubPackagePath(packagePath, fileName);

String subPackageName = getSubPackageName(packageName, fileName);

addCla(claList, subPackagePath, subPackageName, isRecursive);

98.} 99.} 100.} 101.}

102.} catch(Exception e){ 103.e.printStackTrace();104.} 105.} 106.107.private static File[] getClaFiles(String packagePath){ 108.return new File(packagePath).listFiles(new FileFilter(){ 109.@Override

110.public boolean accept(File file){ 111.return

(file.isFile()

&& file.getName().endsWith(“.cla”))|| file.isDirectory();

112.} 113.});114.} 115.116.private static String getClaName(String packageName, String fileName){

117.String claName = fileName.substring(0, fileName.lastIndexOf(“.”));

118.if(org.apache.commons.lang.StringUtil.isNotEmpty(packageName)){

119.claName = packageName + “.” + claName;120.}

121.return claName;122.} 123.124.private static String getSubPackagePath(String packagePath, String filePath){

125.String subPackagePath = filePath;126.if(org.apache.commons.lang.StringUtil.isNotEmpty(packagePath)){

127.subPackagePath = packagePath + “/” + subPackagePath;128.}

129.return subPackagePath;130.} 131.132.private static String getSubPackageName(String packageName, String filePath){

133.String subPackageName = filePath;134.if(org.apache.commons.lang.StringUtil.isNotEmpty(packageName)){

135.subPackageName = packageName + “.” + subPackageName;136.}

137.return subPackageName;138.} 139.140.private static void addClaByAnnotation(List> claList, String packagePath, String packageName, Cla annotationCla){

141.try {

142.File[] files = getClaFiles(packagePath);143.if(files!= null){

144.for(File file : files){

145.String fileName = file.getName();146.if(file.isFile()){

147.String claName = getClaName(packageName, fileName);

148.Cla cls = Cla.forName(claName);149.if(cls.isAnnotationPresent(annotationCla)){

150.claList.add(cls);151.} 152.} else { 153.154.155.String

subPackagePath

= getSubPackagePath(packagePath, fileName);

String

subPackageName

= getSubPackageName(packageName, fileName);

addClaByAnnotation(claList, subPackagePath, subPackageName, annotationCla);

156.} 157.} 158.}

159.} catch(Exception e){ 160.e.printStackTrace();161.} 162.} 163.}

下载黑马程序员:工具类获取指定包名下的所有类word格式文档
下载黑马程序员:工具类获取指定包名下的所有类.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文