私人字符串getEmailTemplateWithActualValueForAccount(字符串模板,客戶帳戶)拋出:IllegalArgumentException - ,IllegalAccessException,{的InvocationTargetException例外,在java中
Map<String,String> map = new HashMap<String, String>();
List<String> listTags = new ArrayList<String>();
Map<Method, String> methodList = new HashMap<Method, String>();
int startIndex=0;
int endIndex=0;
for(int i=0; i<template.length(); i++)
{
char ch = template.charAt(i);
if(ch=='$')
startIndex = i+1;
if(ch=='#')
{
endIndex = i+1;
listTags.add(template.substring(startIndex,endIndex));
}
}
Method[] methods = Account.class.getMethods();
for (Method method : methods) {
String methodName = method.getName();
if(method.getName().startsWith("get"))
{
methodList.put(method, methodName.substring(3,methodName.length()).toUpperCase()+"#");
}
}
Set<Method> methodKeySet = methodList.keySet();
for (Method method : methodKeySet) {
for (String string : listTags) {
if(methodList.get(method).equals(string))
{
try{
Object obj = method.invoke(account, null);
if(obj!=null)
map.put(string, obj.toString());
}catch(NullPointerException e){
}
}
}
}
final StringBuilder list = new StringBuilder("\\$(");
for(final String key: map.keySet())
{
list.append(key);
list.append("|");
}
list.append("[^\\s\\S])");
Pattern pattern = Pattern.compile(list.toString());
Matcher matcher = pattern.matcher(template);
final StringBuffer stringBuffer = new StringBuffer();
while(matcher.find()){
final String string = matcher.group(1);
matcher.appendReplacement(stringBuffer, map.get(string));
}
matcher.appendTail(stringBuffer);
return stringBuffer.toString();
}
我在代碼「對象OBJ = method.invoke線異常(賬號,空) ;」 代碼完全正常工作,但由於此代碼在調度程序中,它將在jboss服務器上每20秒創建一個日誌。
如果您將問題添加到問題中,您會得到更好的回覆。你有代碼拋出它嗎?如果是這樣發佈。你擔心抓住它嗎?如果是這樣,有什麼方法拋出它,你擔心? – corsiKa 2010-07-15 13:39:08
你能提供你的代碼拋出這個異常嗎? – Longball27 2010-07-15 13:44:21
...所以代碼不完美,對不對?只是因爲代碼編譯,並不能完全按照你想要的方式工作。很明顯,在這種情況下它並不是,所以事實上並不是「完美的工作」。 – polygenelubricants 2010-07-15 13:46:40