Java 向类输入参数有意义吗?
我创建了一个DocumentFilter类型的类,如下所示:Java 向类输入参数有意义吗?,java,Java,我创建了一个DocumentFilter类型的类,如下所示: public class CustomDocumentFilter extends DocumentFilter { private StyledDocument styledDocument; private JTextPane panetxt; public CustomDocumentFilter(JTextPane panetxt) { this
public class CustomDocumentFilter extends DocumentFilter
{
private StyledDocument styledDocument;
private JTextPane panetxt;
public CustomDocumentFilter(JTextPane panetxt) {
this.panetxt = panetxt; // Not really necessary
this.styledDocument = panetxt.getStyledDocument();
}
private final StyleContext styleContext = StyleContext.getDefaultStyleContext();
Pattern pattern = buildPattern(mystring);
private Pattern buildPattern(String mystring)
{
StringBuilder sb = new StringBuilder();
String[] toke = StringUtils.split(mystring,",");
for (String token : toke) {
sb.append("\\b");
sb.append(token);
}
if (sb.length() > 0) {
sb.deleteCharAt(sb.length() - 1);
}
Pattern p = Pattern.compile(sb.toString());
return p;
}
我的问题是:如何在CustomDocumentFilter调用中包含mystring
:
//String mystring="lalala";
((AbstractDocument) editeur.getDocument()).setDocumentFilter(new CustomDocumentFilter(editeur));
编辑:
关于Jonathan建议的第一种方式,我得到:
error: cannot find symbol Pattern pattern = buildPattern(mystring); ^ symbol: variable mystring location: class TextEditor.CustomDocumentFilter
我不知道这是否与Pattern子句有关,也不100%确定描述中需要什么。但我认为您只是想问如何将本地字符串值放入新的CustomDocumentFilter对象中 这很简单,你有选择!比我在这里展示的两个还要多。 第一个简单的方法是将其添加到构造函数中
public CustomDocumentFilter(JTextPane panetxt, String myString) {
...
pattern = buildPattern(mystring);
}
((AbstractDocument) editeur.getDocument()).setDocumentFilter(new CustomDocumentFilter(editeur, myString));
另一种方法是使用返回对象的方法
public CustomDocumentFilter myFunction(String myString) {
pattern = buildPattern(mystring);
return this;
}
((AbstractDocument) editeur.getDocument()).setDocumentFilter(new CustomDocumentFilter(editeur).myFunction(myString));
您可以向构造函数中再添加一个参数。。只要您以最有效的方式获得所需的结果,向构造函数添加参数就没有问题。如果您不使用
JTextPane
来获取StyledDocument
之外的任何东西,为什么不接受StyledDocument
作为参数?什么是mystring
?它来自哪里?它包含什么?问题是我需要一个buildPattern()的输入参数;我不知道如何通过考试。如何将其添加到构造函数中?关于第一种方法,我得到如下结果:错误:找不到symbol Pattern=buildPattern(mystring);^symbol:variable mystring location:class TextEditor.CustomDocumentFilter我不知道这是否与模式子句有关如果您可以添加更多的代码,我就可以确定问题出在哪里。我的示例假设您将模式作为类的字段,就像您使用styledDocument和panetxt一样