新人求助关于java.lang.StackOverflowError的异常问题

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 ,那我应该写成什么样