我想知道在外部類中調用外部類的方法,然後使用內部類的方法是否被認爲是不好的做法。內部類使用外部類的方法。那是循環引用嗎?如何避免
在這種情況下: 在BidParser我調用該方法updateMaps(),屬於外部類。 此外,我打電話BidParser第二個內部類的方法InputSanityChecker。
這是不好的做法和反模式嗎?我在這裏創建一個上帝對象嗎?(在其他外部類中有更多的功能)
編輯:我有兩個變量Var1,Var2(比方說)屬於Outer,和checkX方法。
public class Outer{
public static void main(String[] args){
if(args.length == 1){
File file = new File(args[0]);
BidParser.parseBids(file);//<--- Question refers here
}else{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BidParser.parseBids(br); //<--- and here
}
}
private static void updateMaps(String[] elements){
//.....blah blah
}
static class BidParser{
public static void parseBids(File file){
//.....blah blah
InputSanityChecker.checkInput(elems);//<---second inner class method
InputSanityChecker.checkMaps(elems); //<---second inner class method
updateMaps(elems); //<-----outer class method
}
public static void parseBids(Reader reader){
//.....blah blah
InputSanityChecker.checkInput(elems);//<---second inner class method
InputSanityChecker.checkMaps(elems); //<---second inner class method
updateMaps(elems); //<-----outer class method
}
}
static class InputSanityChecker{
public static boolean checkInput(String[] elements){
//.....blah blah
}
public static boolean checkMaps(String[] elements){
//.....blah blah
}
}
}
你沒有使用* inner * classes;你只是使用* member *類。那是因爲你將這些類聲明爲「靜態」。 *內部*類或不'靜態';他們是內部類,因爲他們有一個鏈接到他們創建的外部類的實例。 – 2014-11-25 05:17:57
其次,您對來自BidParser的'checkInput(elems);'的調用無效(將導致編譯器錯誤)。它需要'InputSanityChecker.checkInput(elems);' – 2014-11-25 05:19:01
@ErwinBolwidt不用擔心錯誤。我從實際的代碼中抽象出很多,所以我們可以看到結構。但你是對的我會改變它的清晰 – MayTheSchwartzBeWithYou 2014-11-25 05:23:24