在Java中,我有一个类Num,以及一些扩展的类Num,比如Num_int和Num_double.我想知道方法是否可以识别给定Num对象是否是一个Num_int.
我有以下代码:
void test(Num_int x) {
System.out.println("int");
} // test
void test(Num x) {
System.out.println("other");
} // test
Num_int A = new Num_int( );
Num B = new Num_int( );
Num C = new Num_double( );
test(A); // prints "int"
test(B); // prints "other"
test(C); // prints "other"
Run Code Online (Sandbox Code Playgroud)
不幸的是,当给出A作为参数时,方法"test"仅打印"int".当B通过时,我也不能打印"int",因为B是通过创建的Num B = new Num_int( );.这可能吗?
谢谢.
这可以使用运算符和铸造来完成instanceof。然而,这是一种糟糕的编程习惯。
更好的选择是使其成为test()非final成员Num,并在每个类中适当地覆盖它。然后你只需调用A.test(),Java 的动态调度就会为你处理好一切。
public class Num {
public void test() {
System.out.println("other");
}
}
public class Num_int extends Num {
public void test() {
System.out.println("int");
}
}
public class Num_double extends Num {
// inhertis Num.test()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |