解开继承的方法 [英] Untangling Inherited Methods

查看:235
本文介绍了解开继承的方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

好吧,这是我第一次实现类,一切都错了。我正在实现一个不同的类,PhraseGenerator,和继承的方法,我想在这里定义是getPhrase()。它需要返回archa。而不是在它内部工作,我选择了围绕我的工作围绕在我的工作,然后,现在,无论我放在哪里,一个不同的错误出现。在处理任何这些之前,我想确保我把它放在正确的地方。对我的理解,它会在公共.... FromFile实现PhraseGenerator。关于应该去哪里的任何想法?

  import java.io.BufferedReader; 
import java.io.FileReader;
import java.util.List;
import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class PhraseGeneratorFromFile implements PhraseGenerator {
private ParserHelperImpl parserHelper;
public String getPhrase(){


public PhraseGeneratorFromFile(String filename){
//读取文件
StringBuilder fileContent = new StringBuilder
BufferedReader br = new BufferedReader(new FileReader(filename));
try {

String line = br.readLine();

while(line!= null){
fileContent.append(line);
fileContent.append('\\\
');
line = br.readLine();
}
String everything = fileContent.toString();
} finally {
br.close();
}


parserHelper = new ParserHelperImpl();


List< String> phraseCollection = parserHelper.getPhrases(fileContent,phrases:);
String archetype = parserHelper.getRandomElement(phraseCollection);
boolean flagga = true;
while(flagga = true){
Pattern ptrn = Pattern.compile(#[^#] +#);
Matcher m = ptrn.matcher(archetype);
String fromMatcher = m.group(0);
String col =:;
String token = fromMatcher + col;
List< String> pCol = parserHelper.getPhrases(fileContent,token);
String repl = parserHelper.getRandomElement(pCol);
String hash =#;
String tk2 = hash + token + hash;
archetype = parserHelper.replace(archetype,tk2,repl);
flagga = m.find();
}
String theArcha = archetype;


return theArcha;
}


}
}


 接口PhraseGenerator {
String getPhrase();然后,你写的实现类将采用

$ b的形式。
}


$ b <
$ b

  class PhraseGeneratorImpl implements PhraseGenerator {

private ParserHelperImpl parserHelper;


@Override //用于覆盖或实现的方法
public String getPhrase(){
//将所有要实现的代码放在这里..

//如果你想使用辅助类,干净的方法是使用它的一个实例(你用Helper试过)
//如果你想使用
//从文件系统读取一些东西在这个方法下面定义一个私有方法
String filePhrase = phraseGeneratorFromFile();
//现在使用filePhrase做其他事情

}

//
private String phraseGeneratorFromFile(){
// Do所有的东西和返回短语/字符串所以声明返回类型。你没有在上面的代码中做它
}



}


Okay, so this is my first time implementing classes, and everything's going wrong. I'm implimenting a different class, PhraseGenerator, and the method inherited which I wish to define here is getPhrase(). It needs to return theArcha. Instead of working within it, I chose to wrap its braces around my work afterwards, and now, no matter where I put it, a different error arises. Before dealing with any of these, I want to make sure I'm putting it in the right place. To my understanding, it would go within public....FromFile implements PhraseGenerator. Any thoughts on where it should go?

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.List;
import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class PhraseGeneratorFromFile implements PhraseGenerator {
    private ParserHelperImpl parserHelper;
    public String getPhrase() {


    public PhraseGeneratorFromFile(String filename) {
        // read file
        StringBuilder fileContent = new StringBuilder();
        BufferedReader br = new BufferedReader(new FileReader(filename));
        try {

            String line = br.readLine();

                while (line != null) {
                fileContent.append(line);
                fileContent.append('\n');
                line = br.readLine();
            }
            String everything = fileContent.toString();
        } finally {
            br.close();
        }


        parserHelper = new ParserHelperImpl();


        List<String> phraseCollection = parserHelper.getPhrases(fileContent,"phrases:");
        String archetype = parserHelper.getRandomElement(phraseCollection);
        boolean flagga = true;
        while(flagga = true){
        Pattern ptrn = Pattern.compile("#[^#]+#");
        Matcher m = ptrn.matcher(archetype);
        String fromMatcher = m.group(0);
        String col = ":";
        String token = fromMatcher+col;
        List<String> pCol = parserHelper.getPhrases(fileContent, token);
        String repl = parserHelper.getRandomElement(pCol);
        String hash = "#";
        String tk2 = hash + token + hash;
        archetype = parserHelper.replace(archetype, tk2, repl);
        flagga = m.find();
        }
        String theArcha = archetype;


            return theArcha;
    }


    }
    }

解决方案

Your interface is probably like this

interface PhraseGenerator {
String getPhrase(); 
}

Then the implementing class you wrote will take the form

class PhraseGeneratorImpl implements PhraseGenerator  {

private ParserHelperImpl parserHelper;


@Override //Used for an overridden or implemented method
public String getPhrase() {
//Put all the code you want to implement here..

//If you want to make use of a helper Class the clean way is to use an instance of it(You tried it with Helper)    
//If you want to make use of a utility method within the same class, 
//say reading something from the file system define a private method below this method
String filePhrase = phraseGeneratorFromFile();
//Now use the filePhrase do do other stuff

}

//
private String phraseGeneratorFromFile(){
//Do all the stuff and return phrase/string so declare return type. you havent done it in the code above
}



}

这篇关于解开继承的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆