Questions tagged «instanceof»

instanceof是一种运算符,支持某些面向对象的语言,包括Java,php和JavaScript。一般来说,它允许程序员检查作为其左操作数传递的对象是否是由右操作数指定的类的实例。

8
避免在Java中使用instanceof
具有“ instanceof”操作链被认为是“代码异味”。标准答案是“使用多态性”。在这种情况下我该怎么办? 有许多基类的子类。他们都不在我的控制之下。类似的情况是Java类Integer,Double,BigDecimal等。 if (obj instanceof Integer) {NumberStuff.handle((Integer)obj);} else if (obj instanceof BigDecimal) {BigDecimalStuff.handle((BigDecimal)obj);} else if (obj instanceof Double) {DoubleStuff.handle((Double)obj);} 我确实可以控制NumberStuff等。 我不想使用几行代码就能完成的代码。(有时,我制作了一个HashMap将Integer.class映射到IntegerStuff的实例,将BigDecimal.class映射到BigDecimalStuff的实例,等等。但是今天我想要一些更简单的方法。) 我想要这样简单的东西: public static handle(Integer num) { ... } public static handle(BigDecimal num) { ... } 但是Java不能那样工作。 我想在格式化时使用静态方法。我正在格式化的东西是复合的,其中Thing1可以包含Thing2s数组,Thing2可以包含Thing1s数组。当实现这样的格式化程序时,我遇到了一个问题: class Thing1Formatter { private static Thing2Formatter thing2Formatter = new Thing2Formatter(); public …

6
如何在不使用反射的情况下查看对象是否为数组?
如何在Java中查看Object是否是不使用反射的数组?而且如何在不使用反射的情况下遍历所有项目? 我使用Google GWT,所以我不允许使用反射:( 我很想在不使用反射的情况下实现以下方法: private boolean isArray(final Object obj) { //??.. } private String toString(final Object arrayObject) { //??.. } 顺便说一句:我也不想使用JavaScript,这样我就可以在非GWT环境中使用它。
99 java  arrays  gwt  instanceof 

4
为什么TypeScript中的'instanceof'会给我错误信息“'Foo'只引用一个类型,但是在这里被用作值。”?
我写了这段代码 interface Foo { abcdef: number; } let x: Foo | string; if (x instanceof Foo) { // ... } 但是TypeScript给了我这个错误: 'Foo' only refers to a type, but is being used as a value here. 为什么会这样呢?我以为instanceof可以检查我的值是否具有给定类型,但是TypeScript似乎不喜欢这样。


2
接口和类的'instanceof'运算符的行为不同
我想知道有关instanceofJava 中运算符的以下行为。 interface C {} class B {} public class A { public static void main(String args[]) { B obj = new B(); System.out.println(obj instanceof A); //Gives compiler error System.out.println(obj instanceof C); //Gives false as output } } 为什么会这样呢?interface C和之间没有关系class B,但是它给出false,而如果obj instanceof A给出编译器错误?

7
Java中是否有类似于instanceOf(Class <?> c)的东西?
我想检查一个对象o是否是类的实例C或的子类C。 例如,如果pis是类,Point我想x.instanceOf(Point.class)成为true并且也要x.instanceOf(Object.class)成为true。 我希望它也适用于装箱的原始类型。例如,如果x是Integer那么x.instanceOf(Integer.class)应该是true。 有这样的事吗?如果没有,如何实现这种方法?


6
测试对象是否为参数类型的实例
有没有办法确定对象是否是泛型类型的实例? public &lt;T&gt; test(Object obj) { if (obj instanceof T) { ... } } 这显然行不通。有其他选择吗?就像我想使用Java反射来实例化一个类,然后检查以确保它是通用类型T。

3
检查流中的instanceof
我有以下表达: scheduleIntervalContainers.stream() .filter(sic -&gt; ((ScheduleIntervalContainer) sic).getStartTime() != ((ScheduleIntervalContainer)sic).getEndTime()) .collect(Collectors.toList()); ...其中scheduleIntervalContainers元素类型为ScheduleContainer: final List&lt;ScheduleContainer&gt; scheduleIntervalContainers 是否可以在过滤器之前检查类型?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.