相关疑难解决方法(0)

被认为是不好的做法吗?如果是这样,在什么情况下仍然更可取?

多年来,我尽力避免instanceof.在适用的地方使用多态或访问者模式.我认为在某些情况下它只是简化了维护...是否还有其他一些应该注意的缺点?

但我确实在Java库中看到它,所以我认为它有它的位置?在什么情况下更可取?难道不可避免吗?

java instanceof

62
推荐指数
4
解决办法
3万
查看次数

什么时候使用instanceof正确的决定?

正如我一直都理解的那样,一个instanceof合适的主要案例是:

  1. 实施Object.equals(Object).因此,如果我正在编写一个List类,而不是AbstractList出于任何原因进行扩展,我将equals(o)通过首先测试o instanceof List,然后比较元素来实现.
  2. 对于特殊情况的重要(算法?)优化,它不会改变语义,只会改变性能.例如,Collections.binarySearch进行instanceof RandomAccess测试,并使用稍微不同的二进制搜索RandomAccess和非RandomAccess列表.

instanceof在这两种情况下,我认为不代表代码气味.但是有没有其他情况下使用它是明智的instanceof

java design-patterns

12
推荐指数
2
解决办法
1431
查看次数

什么是像 Java 的 instanceof 这样的结构的函数?

我正在用 Rust 制作一个 OOP 聊天客户端。模块 messages.rs 创建并处理发送到其他模块的消息作为 structs:SimpleMessageComplexMessagestructs:

//! # Messages

use time::SteadyTime;

/// Represents a simple text message
pub struct SimpleMessage<'a> {
    pub user: ...
    pub time: &'a SteadyTime<'a>,
    pub content: &'a str,
}

/// Represents attachments, like text or multimedia files.
pub struct ComplexMessage<'a> {
    pub user: ...
    pub time: &'a SteadyTime<'a>,
    //pub content: PENDING
}

impl<'a> SimpleMessage<'a> { }
impl<'a> ComplexMessage<'a> { }

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn is_simple() { …
Run Code Online (Sandbox Code Playgroud)

oop struct object instanceof rust

7
推荐指数
1
解决办法
1093
查看次数

标签 统计

instanceof ×2

java ×2

design-patterns ×1

object ×1

oop ×1

rust ×1

struct ×1