0
我想实例化一个设置类。另外,我正在使用Singleton模式。这里是我的代码:为什么XMLDecoders readObject方法在尝试读取对象时抛出MalformedURLException?
package com.op.OccupancyPrediction.BusinessLogic.utility;
import java.beans.XMLDecoder;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class Settings {
private int preHeatTimeIntervalInMinutes;
private double PIROccupiedValue;
private int hoursPerDay;
private int minutesPerHour;
private static Settings instance = null;
private Settings()
{
}
public static Settings getInstance() {
if(instance == null) {
instance = new Settings();
try {
XMLDecoder d = new XMLDecoder(
null, new BufferedInputStream(
new FileInputStream("Settings.xml")));
instance = (Settings) d.readObject();
d.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return instance;
}
return instance;
}
public int getPreHeatTimeIntervalInMinutes() {
return preHeatTimeIntervalInMinutes;
}
public void setPreHeatTimeIntervalInMinutes(int preHeatTimeIntervalInMinutes) {
this.preHeatTimeIntervalInMinutes = preHeatTimeIntervalInMinutes;
}
public double getPIROccupiedValue() {
return PIROccupiedValue;
}
public void setPIROccupiedValue(double pIROccupiedValue) {
this.PIROccupiedValue = pIROccupiedValue;
}
public int getHoursPerDay() {
return hoursPerDay;
}
public void setHoursPerDay(int hoursPerDay) {
this.hoursPerDay = hoursPerDay;
}
public int getMinutesPerHour() {
return minutesPerHour;
}
public void setMinutesPerHour(int minutesPerHour) {
this.minutesPerHour = minutesPerHour;
}
}
的XML文档被放置在根文件夹,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0" class="java.beans.XMLDecoder">
<object class="com.op.OccupancyPrediction.BusinessLogic.utility.Settings">
<void property="preHeatTimeIntervalInMinutes">
<int>15</int>
</void>
<void property="PIROccupiedValue">
<double>30</double>
</void>
<void property="hoursPerDay">
<int>24</int>
</void>
<void property="minutesPerHour">
<int>60</int>
</void>
</object>
</java>
它的工作我创建的设置类作为一个单身了。
有什么建议吗?
这是堆栈跟踪:
java.net.MalformedURLException
Continuing ...
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at java.beans.XMLDecoder.readObject(Unknown Source)
at com.op.OccupancyPrediction.BusinessLogic.utility.Settings.getInstance(Settings.java:32)
at com.op.OccupancyPrediction.BusinessLogic.engine.PreHeat.GenerateOccupancyVectorFromPIR(PreHeat.java:83)
at com.op.OccupancyPrediction.BusinessLogic.engine.PreHeat.GenerateDaysFromPIR(PreHeat.java:43)
at com.op.OccupancyPrediction.BusinessLogic.parser.PIRBereklyParser.Parse(PIRBereklyParser.java:49)
at com.op.OccupancyPrediction.App.ParserTest(App.java:22)
at com.op.OccupancyPrediction.App.main(App.java:14)
stacktrace?你的代码中的相关位置? – jtahlborn 2014-11-06 17:28:36
也,你的单例逻辑不是线程安全的,如果你期望这个工作瓦特/多个线程。 – jtahlborn 2014-11-06 17:29:25
我用堆栈跟踪编辑我的问题。稍后我会让它变得安全,谢谢。 – Kenci 2014-11-06 17:40:37