java首字母大写工具类,关于drools-core源码包中ClassUtils类工具处理类对实例化、首字母大写转换等类相关处理操作...

一、前言

关于drools-core源码包中的org.drools.core.util.ClassUtils类工具类,将实例化对象instantiateObject、获取包路径getPackage、首字母大写名称转换toJavaCasing等类处理方法。

二、源码说明package org.drools.core.util;@b@@b@import java.io.File;@b@import java.util.ArrayList;@b@import java.util.Collections;@b@import java.util.HashMap;@b@import java.util.List;@b@import java.util.Map;@b@@b@public final class ClassUtils@b@{@b@  private static Map classes = Collections.synchronizedMap(new HashMap());@b@  private static final String STAR = "*";@b@@b@  public static String convertResourceToClassName(String pResourceName)@b@  {@b@    return stripExtension(pResourceName).replace('/', '.');@b@  }@b@@b@  public static String convertClassToResourcePath(String pName)@b@  {@b@    return pName.replace('.', '/') + ".class";@b@  }@b@@b@  public static String stripExtension(String pResourceName)@b@  {@b@    int i = pResourceName.lastIndexOf(46);@b@    String withoutExtension = pResourceName.substring(0, i);@b@@b@    return withoutExtension;@b@  }@b@@b@  public static String toJavaCasing(String pName) {@b@    char[] name = pName.toLowerCase().toCharArray();@b@    name[0] = Character.toUpperCase(name[0]);@b@    return new String(name);@b@  }@b@@b@  public static String clazzName(File base, File file)@b@  {@b@    int rootLength = base.getAbsolutePath().length();@b@    String absFileName = file.getAbsolutePath();@b@    int p = absFileName.lastIndexOf(46);@b@    String relFileName = absFileName.substring(rootLength + 1, p);@b@@b@    String clazzName = relFileName.replace(File.separatorChar, '.');@b@@b@    return clazzName;@b@  }@b@@b@  public static String relative(File base, File file)@b@  {@b@    int rootLength = base.getAbsolutePath().length();@b@    String absFileName = file.getAbsolutePath();@b@    String relFileName = absFileName.substring(rootLength + 1);@b@    return relFileName;@b@  }@b@@b@  public static String canonicalName(Class clazz) {@b@    StringBuilder name = new StringBuilder();@b@@b@    if (clazz.isArray()) {@b@      name.append(canonicalName(clazz.getComponentType()));@b@      name.append("[]");@b@    } else if (clazz.getDeclaringClass() == null) {@b@      name.append(clazz.getName());@b@    } else {@b@      name.append(canonicalName(clazz.getDeclaringClass()));@b@      name.append(".");@b@      name.append(clazz.getName().substring(clazz.getDeclaringClass().getName().length() + 1));@b@    }@b@@b@    return name.toString();@b@  }@b@@b@  public static Object instantiateObject(String className) {@b@    return instantiateObject(className, null);@b@  }@b@@b@  public static Object instantiateObject(String className, ClassLoader classLoader)@b@  {@b@    Class cls = (Class)classes.get(className);@b@    if (cls == null) {@b@      try {@b@        cls = Class.forName(className);@b@      }@b@      catch (Exception e)@b@      {@b@      }@b@@b@      if ((cls == null) && (classLoader != null))@b@        try {@b@          cls = classLoader.loadClass(className);@b@        }@b@        catch (Exception e)@b@        {@b@        }@b@@b@      if (cls == null)@b@        try {@b@          cls = ClassUtils.class.getClassLoader().loadClass(className);@b@        }@b@        catch (Exception e)@b@        {@b@        }@b@@b@      if (cls == null)@b@        try {@b@          cls = Thread.currentThread().getContextClassLoader().loadClass(className);@b@        }@b@        catch (Exception e)@b@        {@b@        }@b@@b@      if (cls == null)@b@        try {@b@          cls = ClassLoader.getSystemClassLoader().loadClass(className);@b@        }@b@        catch (Exception e)@b@        {@b@        }@b@@b@      if (cls != null) {@b@        classes.put(className, cls);@b@      }@b@      else@b@        throw new RuntimeException("Unable to load class '" + className + "'");@b@@b@    }@b@@b@    Object object = null;@b@    try {@b@      object = cls.newInstance();@b@    } catch (Throwable e) {@b@      throw new RuntimeException("Unable to instantiate object for class '" + className + "'", e);@b@    }@b@@b@    return object;@b@  }@b@@b@  public static void addImportStylePatterns(Map patterns, String str)@b@  {@b@    if ((str == null) || ("".equals(str.trim()))) {@b@      return;@b@    }@b@@b@    String[] items = str.split(" ");@b@    for (int i = 0; i  patterns, String className)@b@  {@b@    String qualifiedNamespace = className.substring(0, className.lastIndexOf(46)).trim();@b@@b@    String name = className.substring(className.lastIndexOf(46) + 1).trim();@b@    Object object = patterns.get(qualifiedNamespace);@b@    if (object == null)@b@      return true;@b@    if ("*".equals(object))@b@      return false;@b@    if (patterns.containsKey("*"))@b@    {@b@      return true;@b@    }@b@    List list = (List)object;@b@    return (!(list.contains(name)));@b@  }@b@@b@  public static String getPackage(Class> cls)@b@  {@b@    Package pkg = (cls.isArray()) ? cls.getComponentType().getPackage() : cls.getPackage();@b@    if (pkg == null) {@b@      int dotPos = cls.getName().lastIndexOf(46);@b@      if (dotPos > 0) {@b@        return cls.getName().substring(0, dotPos - 1);@b@      }@b@@b@      return "";@b@    }@b@@b@    return pkg.getName();@b@  }@b@}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值