我用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)
错误的原因是什么?
我有这个简单的接口/类:
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) 好的,这是我的类,它封装了一个对象,并将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)
怎么才能让这个工作?谢谢!
我所期待的是' 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[]吗?这里到底发生了什么,为什么这不像我期待的那样有效?
在这里使用什么是合适的习惯用语?
确定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) 为了在窗口之间传递数据,我通过该window.open方法打开新窗口,并将新打开的窗口的属性设置为对象.这使我不仅可以传递数据,还可以共享变量的实例,这意味着如果我在一个窗口上修改对象或其任何派生属性,它会在所有窗口上修改它.
然而,问题是使用instanceof运算符非常有趣.
当我做
typeof m
m instanceof Object
Run Code Online (Sandbox Code Playgroud)
第一行返回,"object"而第二行返回false.
我特别需要instanceof运算符来检查数组和对象.
这是一个示例的小提琴(警告:尝试在页面加载时打开一个窗口,因此弹出窗口阻止程序可能会阻止它).http://jsfiddle.net/Chakra/mxf2P/1/
我正在编写自己的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)
为什么?
我需要为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的类型.怎么做?
从那两个帖子:
有几种方法可以检查一个对象是否是数组
variable instanceof Array
Array.isArray(variable)
有人告诉我,第二种方法比第一种方法好。有没有人能说出它的原因?
我有这些代码行:
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语句吗?如果是这样,怎么样?
instanceof ×10
java ×7
javascript ×3
superclass ×2
abstract ×1
arrays ×1
bytearray ×1
casting ×1
class ×1
equals ×1
generics ×1
if-statement ×1
prototype ×1
reflection ×1
subclass ×1
tabs ×1
typeof ×1
window ×1