public class ProcessRow {
Properties source= new Properties();
{
try {
FileInputStream fis = new FileInputStream(new File(
inputPropertieName()));
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
source.load(isr);
fis.close();
} catch (Exception e) {
// throw new ExceptionInInitializerError(e);
}
}
public String filterAlphabet(String alph) {
alph = alph.replaceAll("[^(A-Z)]", "");
return alph;
}
public String Pname() {
UseProcess f=new UseProcess();
String hai = f.fileName;
String a = filterAlphabet(hai);
String b = hai.substring(hai.indexOf(a), hai.indexOf(a) + 6);
return b;
}
public String inputPropertieName() {
/*
* System.out.println("请输入配置文件名称:"); Scanner a = new Scanner(System.in);
* String propertieName = a.next();
*/
// a.close();
ProcessRow a = new ProcessRow();
String propertieName = a.Pname();
return propertieName;
}
Exception in thread "main" java.lang.StackOverflowError
at java.util.Dictionary.<init>(Dictionary.java:55)
at java.util.Hashtable.<init>(Hashtable.java:251)
at java.util.Hashtable.<init>(Hashtable.java:283)
at java.util.Properties.<init>(Properties.java:143)
at java.util.Properties.<init>(Properties.java:135)
at test.ProcessRow.<init>(ProcessRow.java:18)
at test.ProcessRow.inputPropertieName(ProcessRow.java:51)
at test.ProcessRow.<init>(ProcessRow.java:22)
at test.ProcessRow.inputPropertieName(ProcessRow.java:51)
at test.ProcessRow.<init>(ProcessRow.java:22)
at test.ProcessRow.inputPropertieName(ProcessRow.java:51)
ProcessRow构造函数调用inputPropertieName()
inputPropertieName()内又调用ProcessRow a = new ProcessRow();造成循环调用,无限递归
楼上正解,代码里无限new ProcessRow 对象,导致栈溢出
大多是死循环造成内存溢出,,,
我想调用Pname()方法,有不能new ProcessRow ,那我应该写成什么样