报文(message)是网络中交换与传输的数据单元,即站点一次性要发送的数据块。报文包含了将要发送的完整的数据信息,其长短很不一致,长度不限且可变。通常报文中包含通讯协议、通讯内容等信息。
现定义一个报文类Message
用于模拟网络报文,其包含属性proto
(String
类型)表示报文的通讯协议、属性psd
(String
类型)表示报文内容,现需要您重写Object
类的equals
和toString
方法,具体要求:
(1)equals
方法:当两个Message
对象的proto
和psd
均相同时,表示同一个报文返回true
,否则返回false
。
(2)toString
方法:返回字符串,形式为“<当前对象的proto
字符串>当前对象的psd
字符串”,例如proto为tcp,psd为abcdefg,则返回“<tcp>abcdefg”。
裁判测试程序样例:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Message m1 = new Message(scanner.next(),scanner.next());
Message m2 = new Message(scanner.next(),scanner.next());
if(m1.equals(m2))
System.out.println(m1+" | "+m2+" equals!");
else
System.out.println(m1+" | "+m2+" not equals!");
scanner.close();
}
}
/* 请在这里填写答案 */
输入样例:
tcp abcptaahello
tcp abcptaahello
输入样例解释:
输入两行,每行两个内容用空格间隔,分别表示同学协议和报文内容。
输出样例:
<tcp>abcptaahello | <tcp>abcptaahello equals!
思路:把数据类型写出来,再重写两个方法
参考代码+注释如下:
class Message {
private String proto;
private String psd;
// 构造函数
public Message(String proto, String psd) {
this.proto = proto;
this.psd = psd;
}
// 重写 equals 方法
public boolean equals(Object obj) {
if (this == obj)
return true;
//判断obj与this类的是否为同一类的实例
if (obj == null || getClass() != obj.getClass()) {
return false;
}
//检查this的proto字段和psd字段与message对象相应字段的内容是否相等
Message message = (Message) obj;
return proto.equals(message.proto) && psd.equals(message.psd);
}
// 重写 toString 方法
public String toString() {
return "<" + proto + ">" + psd;
}
}