草庐IT

InstanceOf

全部标签

java - “instanceof”的示例

publicclassTableModel2extendsTableModel1{...}TableModel2tableModel=newTableModel2();booleant1=tableModelinstanceofTableModel1;booleant2=tableModelinstanceofTableModel2;在上面的例子中,t1和t2是true。那么,如何使用instanceof区分TableModel1和TableModel2? 最佳答案 你不能用instanceof来做,但是你可以用getClass来做

java - 为什么要在 instanceOf 之后强制转换?

在下面的示例中(来self的类(class)包),我们希望给Square实例c1一些其他对象p1的引用,但前提是这2个是兼容的类型。if(p1instanceofSquare){c1=(Square)p1;}这里我不明白的是,我们首先检查p1确实是一个Square,然后我们仍然对其进行转换。如果是Square,为什么要投?我怀疑答案在于表面类型和实际类型之间的区别,但我仍然感到困惑......编辑:编译器会如何处理:if(p1instanceofSquare){c1=p1;}编辑2:instanceof检查的是actual类型而不是apparent类型的问题吗?然后Actor改变了明显

java - Java中如何避免instanceof

在我的应用程序中,我有一个二维实体数组来表示网格。网格中的每个位置都可以是空的,也可以被一个实体占据(在这种情况下,它只是一个人或墙)。现在我使用instanceof来检查实体是人还是墙。我正在考虑为每个实体提供一个方法,该方法返回一个enum说明它们的类型,即墙实体将返回EntityType.WALL。我想知道这是否是删除instanceof使用的最佳主意,还是instanceof适合这种情况? 最佳答案 使用Tell,Don'tAsk:与其问对象是什么然后对此使用react,不如告诉对象要做什么,然后墙壁或人决定他们如何做他们需

Java - 是否有像 instanceof 这样的 "subclassof"?

我重写了equals()方法,我需要知道对象是否是Event子类的实例(Event是父类(superclass))。我想要“objsubclassofEvent”之类的东西。这是怎么做到的?提前致谢! 最佳答案 instanceof可以处理得很好。 关于Java-是否有像instanceof这样的"subclassof"?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/26997

java - "instanceof Void"总是返回 false 吗?

这个方法能以某种方式返回true吗?publicstaticbooleanisVoid(Tt){returntinstanceofVoid;} 最佳答案 是的,但我确信这不是很有用:publicstaticvoidmain(finalString[]args)throwsException{finalConstructorc=Void.class.getDeclaredConstructors()[0];c.setAccessible(true);System.out.println(c.newInstance(null)insta

java - 何时使用 Class.isInstance() 以及何时使用 instanceof 运算符?

这个问题在这里已经有了答案:关闭10年前.PossibleDuplicate:JavaisInstancevsinstanceOfoperator什么时候使用Class.isInstance(),什么时候使用instanceof操作符?Java提供了两种检查赋值兼容性的选项。什么时候用哪个? 最佳答案 对于instanceof,您需要在编译时知道确切的类。if(fooinstanceofThisClassIKnowRightNow)...对于isInstance,类是在运行时决定的。(后期绑定(bind))例如if(someObje

java - instanceof 如何在接口(interface)上工作

instanceof可用于测试对象是给定类的直接实例还是子实例。instanceof也可以与接口(interface)一起使用,即使接口(interface)不能像类一样被实例化。谁能解释一下instanceof是如何工作的? 最佳答案 首先,我们可以像这样将实现特定interface的类的instances存储在interface引用变量中。packagecom.test;publicclassTestimplementsTestable{publicstaticvoidmain(String[]args){Testabletes

java - 无法对参数化类型 ArrayList<Foo> 执行 instanceof 检查

以下代码:((tempVarinstanceofArrayList)?tempVar:null);原因:CannotperforminstanceofcheckagainstparameterizedtypeArrayList.UsetheformArrayListinsteadsincefurthergenerictypeinformationwillbeerasedatruntime谁能解释一下“更多的泛型类型信息将在运行时被删除”是什么意思以及如何解决这个问题? 最佳答案 这意味着如果你有任何参数化的东西,例如ListfooL

java - 检查流中的 instanceof

我有以下表达:scheduleIntervalContainers.stream().filter(sic->((ScheduleIntervalContainer)sic).getStartTime()!=((ScheduleIntervalContainer)sic).getEndTime()).collect(Collectors.toList());...其中scheduleIntervalContainers具有元素类型ScheduleContainer:finalListscheduleIntervalContainers是否可以在过滤器之前检查类型?

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

多年来,我尽量避免使用instanceof。在适用的情况下使用多态性或访问者模式。我想它只是在某些情况下简化了维护......还有其他需要注意的缺点吗?但是我确实在Java库中到处看到它,所以我想它有它的位置吗?在什么情况下更可取?这是不可避免的吗? 最佳答案 它肯定在equals的普通实现中占有一席之地。例如publicbooleanequals(Objecto){if(this==o){returntrue;}if(!(oinstanceofMyClass)){returnfalse;}//Comparefields...}关于