好,我搜索互聯網來這個問題,但沒有發現任何適當的溶液工廠方法與類註冊圖案產生空指針異常
在http://www.oodesign.com/factory-pattern.html
作者描述遠註冊使用反射類或對象創建
我試圖通過下面的代碼創建對象的方法: 工廠類
package com.mf.egyptse;
import java.util.HashMap;
public abstract class ParserFactory {
private static HashMap parsers;
static
{
parsers= new HashMap();
System.out.println("This is first static block");
}
static void putParser(Object key,Object parser)
{
parsers.put(key, parser);
}
static Object getParser(Object key)
{
return parsers.get(key);
}
}
每個語法分析器寄存器本身在工廠: 公共類NormalParser延伸ParserFactory實現ParsingBehavior {
/**
* Define the number of nested columns or tags to be parsed
*/
final static int NO_OF_COLOUMNS = 13;
static String input = null;
static String[] elements= {"name","sector", "p.c", "open", "close", "chgpercent", "lastprice", "high", "low","value","volume","trades","marketcap"};
static
{
ParserFactory.putParser("normal", new NormalParser());
}
和主要是:
public class Main {
/**
* @param args
* @throws IOException
* @throws InterruptedException
*/
public static void main(String[] args) throws IOException, InterruptedException {
// NileParser.parseNile();
// OTCParser.parseOTC();
// NormalParser.parseNormal();
ParsingBehavior parser = (ParsingBehavior) ParserFactory.getParser("normal");
parser.parseToXML(null, null);
}
}
界面:
package com.mf.egyptse;
import java.io.File;
import java.io.IOException;
public interface ParsingBehavior {
void parseToXML(CharSequence input,File file) throws IOException;
}
此代碼在執行時總是返回空指針異常。斑紋是靜態塊不執行。那麼解決方案是什麼?
請發佈stacktrace,否則我們不得不猜測您的NPE來自哪裏。 – Preston