Java是否有“类”测试方法

2022-09-01 11:06:30

我有一个基类,其他几个类继承自,命名,,等等...在语句中执行测试以确定实例派生自哪种类的最佳方法是什么?StatementIfStatementWhereStatementifStatement


答案 1
if(object instanceof WhereStatement) {
   WhereStatement where = (WhereStatement) object;
   doSomething(where);
}

请注意,像这样的代码通常意味着你的基类缺少多态方法。即 应该是 的方法,可能是抽象的,被子类覆盖。doSomething()Statement


答案 2
if (obj.getClass().isInstance(Statement.class)) {
   doStuffWithStatements((Statement) obj));
}

这种技术(与“instanceof”关键字相反)的好处是,您可以将测试类作为对象传递。但是,是的,除此之外,它与“实例”相同。

注意:我故意避免编辑类型实例检查是否正确。是的,在大多数情况下,最好使用多态性。但这不是OP问的,我只是在回答他的问题。


推荐