我在这里写了这个小部分,在电子邮件主题中找到标签,提取它们并将它们保存到我的套装中。
即。如果电子邮件主题是"你好那里#bro#senpai"它应该找到并提取“兄弟”。和' senpai'并将其放入m_aTags(这只是自定义类型Set - this.m_aTags = new HashSet(); - 这就是我如何创建它)
在m_aTags中我把所有新标签都作为MyTag对象。
Data = o.AsQueryable().Sum(f)
这是非常简单的构造函数。
public ADOTag(String sTagName){
this.sTagName = sTagName;
}
我尝试从这个for循环中的Set中打印它,但是我得到类似的东西:com.xxx_ee.e_mail.MyTag@72433225
com.xxx_ee.e_mail.MyTag@12312325
我不确定为什么要显示而不只是"兄弟"和" senpai"。 我想打印并将其用作字符串,我无法想到会做什么,因为我已经尝试了很多东西。
我不确定该怎么办,任何人都可以帮助我?:)
解答: 我不得不在MyTag类中重写toString()方法:)
private void parseSubject(String sSubject) {
Pattern aPattern = Pattern.compile("#(\\w+|\\W+)");
//this patter checks for '#anyword'
Matcher aMatcher = aPattern.matcher(sSubject);
this.m_sSubject = sSubject;
while (aMatcher.find()) {
String sTagPart = aMatcher.group();
this.m_aTags.add(new MyTag(sTagPart));
}
for (MyTag s : m_aTags) {
System.out.println(s);
}
}
答案 0 :(得分:1)
您正在打印该对象。尝试覆盖MyTag类中的toString方法,并在打印对象时调用Object上的toString
或者如果你在MyTag类中有一个方法来获取tagName,那么就使用它。例如
之类的例子System.out.println(s.getTag());
答案 1 :(得分:1)
当您执行System.out.println(s);
时,您基本上会调用s.toString()
。但是,由于s的类型为MyTag
,MyTag
并未在其toString()
上实现Object
。拥有,它称之为超级。
Java中的每个对象都派生自toString()
。对象的public MyTag(String sTagName){
this.sTagName = sTagName;
}
@Override
public String toString() {
return this.sTagName;
}
打印出这个"乱码"这基本上是对象的名称及其所在的地址。
如果您希望对象执行其他类型的打印(如标记值),则需要自己覆盖该方法。例如:
config.action_dispatch.default_headers = {
'X-Frame-Options' => 'ALLOWALL'
}
答案 2 :(得分:0)
看起来你的类MyTag缺少一个好的toString()实现,比如
@Override
public String toString() {
return sTagName;
}
答案 3 :(得分:0)
System.out.println(s)调用System.out.println(Object对象),此方法只打印object.toString()。但是当你调用toString()为s时,你实际上是在调用Object.toString()。这就是Object.toString()的样子:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
要更改此结果,请在MyTag类中覆盖toString()。