我有一个作为类参数的方法dummy
,A
但我需要将子类的实例传递 B
给该方法。我知道:
Java 转换是否会引入开销?为什么?
java中的向下转换有开销。我的大部分代码都处理子类B
,所以我不为此目的使用向下转换。cc
相反,我为此目的使用时间实例变量。但这不是对 subclass 的对象进行更改m
。我也需要更改可用的变量cc
,例如变量m
。这是我的代码:
public class TestCast {
public TestCast() {
B m = new B(12, 3);
dummy(m);
A cc = m;
dummy(cc);
System.out.println(m.a);
System.out.println(cc.a);
}
public void dummy(A t) {
t.a = 22222;
}
public static void main(String[] args) {
new TestCast();
}
}
class A {
public int a = 0;
public A(int a) {
this.a = a;
}
}
class B extends A {
public int a;
public int b;
public B(int a, int b) {
super(a);
this.a = a;
this.b = b;
}
}
带输出
12
22222