标签: instanceof

在内部类类型上使用instanceof时,"非法泛型类型的instanceof"?

我用NetBeans编写了这样的代码:

public class Grafo<V, E>
{
    class Par
    {
        int a, b;
        Par(int a, int b) {
            this.a = a;
            this.b = b;
        }

        @Override
        public boolean equals(Object ob)
        {
            if(ob instanceof Par) {
                Par p = (Par)ob;
                return this.a==p.a && this.b==p.b;
            }

            return false;
        }
    }

    //stuff...
} //end of class Grafo
Run Code Online (Sandbox Code Playgroud)

错误在内部类"Par"的方法equals()中.

NetBeans说错误是"非法泛型类型的instanceof".错误在下面的行中.

            if(ob instanceof Par) {
Run Code Online (Sandbox Code Playgroud)

错误的原因是什么?

java instanceof inner-classes

4
推荐指数
1
解决办法
5788
查看次数

反射:将对象转换为子类而不使用instanceof

我有这个简单的接口/类:

public abstract class Message {}

public class Message1 extends Message {}

public class Message2 extends Message {}
Run Code Online (Sandbox Code Playgroud)

一个实用类:

public class Utility {
    public void handler(Message m) {
        System.out.println("Interface: Message");
    }

    public void handler(Message1 m) {
        System.out.println("Class: Message1");
    }

    public void handler(Message2 m) {
        System.out.println("Class: Message2");
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,主要类:

public static void main(String[] args) {

    Utility p = new Utility();

    Message1 m1 = new Message1();
    p.handler(m1);

    Message m = (Message) m1;
    p.handler(m);

}
Run Code Online (Sandbox Code Playgroud)

输出是

> Class: Message1
> Interface: Message …
Run Code Online (Sandbox Code Playgroud)

java reflection subclass instanceof superclass

4
推荐指数
1
解决办法
3872
查看次数

泛型和instanceof - java

好的,这是我的类,它封装了一个对象,并将equals和String委托给这个对象,为什么我不能使用???的实例?

public class Leaf<L>
{
    private L object;

    /**
     * @return the object
     */
    public L getObject() {
        return object;
    }

    /**
     * @param object the object to set
     */
    public void setObject(L object) {
        this.object = object;
    }

    public boolean equals(Object other)
    {
        if(other instanceof Leaf<L>) //--->ERROR ON THIS LINE
        {
            Leaf<L> o = (Leaf<L>) other;
            return this.getObject().equals(o.getObject());
        }
        return false;
    }

    public String toString()
    {
        return object.toString();
    }
}
Run Code Online (Sandbox Code Playgroud)

怎么才能让这个工作?谢谢!

java generics instanceof

4
推荐指数
1
解决办法
3045
查看次数

Java instanceof和byte []

我所期待的是' potentialByteArray instanceof byte[]当a potentialByteArray是a的实例时会返回true byte[],但这似乎不会发生 - 由于某种原因它总是错误的!

我有条件,如下所示:

if (!(potentialByteArray instanceof byte[])) { /* ... process ... */ }
else  {
        log.warn("--- can only encode 'byte[]' message data (got {})", msg.getClass().getSimpleName());
        /* ... handle error gracefully ... */
    }
Run Code Online (Sandbox Code Playgroud)

......以及以下内容如下:

--- can only encode 'byte[]' message data (got byte[])
Run Code Online (Sandbox Code Playgroud)

这意味着该对象实际上一个byte[]但不是instanceof byte[]某种方式.那么......这会起作用Byte[]吗?这里到底发生了什么,为什么这不像我期待的那样有效?

在这里使用什么是合适的习惯用语?

java casting bytearray instanceof

4
推荐指数
1
解决办法
9497
查看次数

确定JS对象的原型

确定JavaScript对象原型的最佳方法是什么?我知道以下两种方法,但我不确定在跨浏览器支持方面哪种方式是"最佳"(或者如果有更好的首选方式).

if (obj.__proto__ === MY_NAMESPACE.Util.SomeObject.prototype) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

要么

if (obj instanceof MY_NAMESPACE.Util.SomeObject) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

javascript prototype instanceof

4
推荐指数
1
解决办法
71
查看次数

当通过窗口传递对象时,instanceof运算符失败

为了在窗口之间传递数据,我通过该window.open方法打开新窗口,并将新打开的窗口的属性设置为对象.这使我不仅可以传递数据,还可以共享变量的实例,这意味着如果我在一个窗口上修改对象或其任何派生属性,它会在所有窗口上修改它.

然而,问题是使用instanceof运算符非常有趣.

当我做

typeof m
m instanceof Object
Run Code Online (Sandbox Code Playgroud)

第一行返回,"object"而第二行返回false.

我特别需要instanceof运算符来检查数组和对象.

这是一个示例的小提琴(警告:尝试在页面加载时打开一个窗口,因此弹出窗口阻止程序可能会阻止它).http://jsfiddle.net/Chakra/mxf2P/1/

javascript tabs window typeof instanceof

4
推荐指数
1
解决办法
456
查看次数

java instanceof运算符和类返回方法

我正在编写自己的TableModel实现.由于我需要一些共享某些功能的各种实现,我决定首先准备一个抽象类.表的字段表示为:

protected Object[][] lines;
Run Code Online (Sandbox Code Playgroud)

基本上,同一列中的所有元素应该是相同的类型,但是列类可能因不同的实现而异.我想setValueAt在抽象类中编写一个通用函数,检查是否val属于正确类型.

@Override
public void setValueAt(Object val, int row, int col) {
    if (val instanceof this.getColumnClass(col))
        lines[col][row] = val;
}
Run Code Online (Sandbox Code Playgroud)

编译器在此发出错误信号:

Syntax error on token "instanceof", == expected
Run Code Online (Sandbox Code Playgroud)

为什么?

java instanceof

4
推荐指数
1
解决办法
1150
查看次数

是MyClass的Object实例

我需要为MyClas制作equals函数.

public class MyClass
{
boolean equals(Object value)
  {
    if (... value is type of MyCLass ...)
      {
        return= ... check conditions...;
      } else return false;
  }
}
Run Code Online (Sandbox Code Playgroud)

为此,我需要知道Object的值是否是MyClass的类型.怎么做?

java class equals instanceof

4
推荐指数
1
解决办法
447
查看次数

instanceof Array 比 JavaScript 中的 isArray 更好吗?

从那两个帖子:

有几种方法可以检查一个对象是否是数组

  1. variable instanceof Array

  2. Array.isArray(variable)

有人告诉我,第二种方法比第一种方法好。有没有人能说出它的原因?

javascript arrays instanceof

4
推荐指数
1
解决办法
3461
查看次数

然后更好的方式在Java中使用(x instanceof y)吗?

我有这些代码行:

    public String getAccountType(BankAccount a){
       if(a instanceof RegularAccount)
           return "RA";
       else if(a instanceof SavingsAccount)
           return "SA";
       else if(a instanceof cityAccount)
           return "CLA";
       else if(a instanceof StateLawAccount)
           return "SLA";
       else if(a instanceof FederationLawAccount)
           return "FLA";
       else
           return null;
    }
Run Code Online (Sandbox Code Playgroud)

BankAccount是下面所有类的超类(抽象).在这个方法中,我只想返回String中的"a"类.

但是,我想知道是否有更好的方法来验证除这一堆if/else语句之外的"a"类.有吗?我能用switch语句吗?如果是这样,怎么样?

java if-statement instanceof abstract superclass

4
推荐指数
1
解决办法
568
查看次数