我有一个非常基本的问题,它更像是一个设计问题。下面列出的是用户是抽象类的类。仅PremiumUser和ADMINUSER可以发布消息而guestuser的不能发布的消息(因此没有postedMessages;属性在guestuser的类)。根据对象实例类型转换的正确方法
问题: 我有从那里我调用的postMessage()主类;方法,但在调用此方法之前,我使用另一种方法(其返回类型为用户)获得对象的用户。所以,调用的postMessage()方法,我将不得不类型转换用户对象插入任一ADMINUSER或PremiumUser对象。我看到三种方式来做到这一点:
- 使用属性USERTYPE在用户类做的if-else比较和强制类型转换基于这一点。
- 使用java反射来获取对象的方法列表并调用postMessage方法。
- 考虑使用一个接口:我考虑使用一个接口,该接口将由AdminUser和PremiumUser类实现。即使在这种情况下,我也无法将用户类型的对象转换为类型接口,并无缝地使用它来调用postMessage();
我在想,如果我的设计在某种程度上缺乏或者它是一个普遍的问题,有一个聪明的解决方案这一点。
@RC。我已经考虑通过PremiumUser和AdminUser类实现一个接口。即使在这种情况下,我也无法将类型为User的对象转换为接口并无缝地使用它。 (我宁愿将其添加到问题本身中) – rsharma
只需传递User对象,并检查调用方法中的错误。无论如何,您都无法声明一个方法,只要不包含GuestUser就可以接受PremiumUser和AdminUser。 –