解开继承的方法 [英] Untangling Inherited Methods
问题描述
好吧,这是我第一次实现类,一切都错了。我正在实现一个不同的类,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屋!