Java向下广播
嗨,我有一节这样的课Java向下广播,java,downcast,Java,Downcast,嗨,我有一节这样的课 import java.util.ArrayList; public class MobilePhone { private String number; private ArrayList<Message> messages; public MobilePhone(String n) { this.number = n; this.messages = new ArrayList<Mess
import java.util.ArrayList;
public class MobilePhone {
private String number;
private ArrayList<Message> messages;
public MobilePhone(String n) {
this.number = n;
this.messages = new ArrayList<Message>();
}
public String getNumber() {
return number;
}
public void setMessages(Message messages) {
this.messages.add(messages);
}
public ArrayList<Message> getMessages() {
return messages;
}
}
和一个子类
public class SMS extends Message {
static int maxBodySize = 160;
public void showMessage(){
System.out.println("SMS");
System.out.println("Subject: " + super.subject);
System.out.println("Text: " + super.bodyText);
}
}
在我的代码中,我有以下内容:
for (MobilePhone item : listaTelefones) {
for (Message item2: item.getMessages()){
((SMS) item2).showMessage();
}
}
这给了我一个错误:
线程主java.lang.ClassCastException中出现异常:无法将消息转换为SMS
我不能将消息向下广播到SMS以便使用SMS showMessage方法吗?列表中的某些项目属于类别消息,但不属于类别SMS。因此,你不能把它们投到短信类中 添加以下内容以确保您正在处理SMS:
列表中的某些项目属于类别消息,但不属于类别SMS。因此,你不能把它们投到短信类中 添加以下内容以确保您正在处理SMS: 您需要检查消息是否为SMS类型,然后再进行转换,因为并非所有消息都是SMS 这将确保您不会尝试将非SMS类型的消息强制转换为SMS类型。在执行强制转换之前,您需要检查消息是否为SMS类型,因为并非所有消息都是SMS 这将确保您不会尝试将非SMS类型的消息强制转换为SMS类型。您必须将消息放入列表中。要么: 型式试验: 如果您知道它们是短信息,请在短信息中键入您的列表: 您必须在列表中添加一条消息。要么: 型式试验: 如果您知道它们是短信息,请在短信息中键入您的列表:
for (MobilePhone item : listaTelefones) {
for (Message item2: item.getMessages()){
((SMS) item2).showMessage();
}
}
if (item2 instanceof SMS) {
((SMS) item2).showMessage();
}
if(item2 instanceof SMS) {
((SMS) item2).showMessage();
}
if (item2 instanceof SMS) {
((SMS) item2).showMessage();
} else {
// ?
}
private ArrayList<SMS> messages;
public ArrayList<SMS> getMessages() {
return messages;
}