我有以下课程
class Message{
private List content;
private String messageType;
public Message(String messageType, List content){
this.content = content;
this.messageType = messageType;
}
}
Okey,现在想象我想发送不同的消息类型。例如,消息类型为“friends”。我想将他们的ID号(例如int
)存储为找到其姓名的密钥(String
)。这提醒我应该使用HashMap
类。或者简单的String
,无论如何。还有其他需要使用其他对象类型的情况。
这里的主要问题是:我应该如何继续编写一个具有两个属性的类:
我已经读过铸造是一种不好的做法,因此我不想将content
声明为对象,然后将其转换为消息类型的函数。
我的想法:
getContent()
类中声明一个类似Message
的抽象方法,我需要建立它返回的数据类型,这让我回到主要问题。这种方式变得无用,因为我需要发送Message
而不是子类。答案 0 :(得分:1)
您根本不需要app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
{
ClientId = ConfigurationManager.AppSettings["GoogleClientId"],
ClientSecret = ConfigurationManager.AppSettings["GoogleClientSecret"]
});
,您只需使用类定义泛型类型并在messageType
中使用它,例如:
content
现在,假设类型为class Message<T> {
private List<T> content;
public Message(List<T> content){
this.content = content;
}
}
,您可以这样做:
String
这样,您可以使用不同类型实例化Message<String> message = new Message<>(new ArrayList<String>());
类。 Here是关于泛型类类型的文档。
答案 1 :(得分:1)
class Message{
private List content;
private HashMap<String,Integer> messageType = new HashMap<String,Integer>();
public Message(HashMap messageType, List content){
this.content = content;
this.messageType = messageType;
}
}
这段代码是否有意义???
答案 2 :(得分:0)
您可以拥有一个接口,其中包含适用于所有消息类型的常用方法,并且所有消息都实现了Sendable接口。
interface Sendable {
public String getContent();
public MessageType getMessageType();
}
public FriendMessage implements Sendable {
private String title;
private Map friends;
private messageType = MessageType.Friends;
public String getContent(){
return title+ friends.toString();
}
public MessageType getMessageType() {
return this.messageType;
}
}
public Enum MessageType {
Friends, NoFriends, Lonely
}
您还应该有一个Enum,它会对您的所有消息类型进行分类。这将允许您确定消息类型,而无需进行instanceof
或字符串比较。