代码之家  ›  专栏  ›  技术社区  ›  Winston Chen

对于类<t>。isassignablefrom(类<)有什么建议的替代方法?“CLS”?

  •  1
  • Winston Chen  · 技术社区  · 15 年前

    目前我正在对一段代码进行分析。在分析过程中,我发现这个方法调用,

    Class<T>.isAssignableFrom(Class<?> cls)
    

    占用相当多的时间。

    因为这是一个来自反射的方法,所以与普通的关键字或方法调用相比,它需要很多时间。我想知道这个方法调用是否有一些好的替代方法?

    3 回复  |  直到 13 年前
        1
  •  2
  •   Matthew Flaschen    15 年前

    “[I]T检查类类型 通过方法参数传入 看看类型是否与 资格。”

    对我来说,这意味着需要方法参数来实现特定接口或从特定类继承。记住,接口可以是 RandomAccess . 我意识到改变你的api可能不是一个选择。

        2
  •  2
  •   Bozho    15 年前

    如果有要检索其类的对象,可以将其替换为:

    obj instanceof ClassName
    

    但我不会说得更快。实际上,我怀疑这会导致程序执行的任何问题。不要过度优化。

        3
  •  2
  •   georgeawg    13 年前

    我不知道这是否影响了你,但我认为值得注意的是,在Java 5的早期,ISDAIDABLE从 significant performance problems 后来被纠正了。我找不到修复程序是否被移植到Java 5,但它肯定会进入Java 6。

    另外, Sun JVM Performance Wiki 指出 I级仪表 类ISassignableFrom 表现得和 运算符 .

    因此,如果您在Java 6或更高版本上,似乎没有其他选择。 类ISassignableFrom 这将比已经存在的要快。