java接口性能_Java通用接口性能

由于编译器有时会添加合成桥接方法,因此可能会出现轻微的性能损失.请考虑以下示例:

public class GenericPerformance {

public static void main(final String[] args) {

final Stuff stuff = new IntStuff();

final Integer data = stuff.getData();

stuff.putData(data);

}

}

interface Stuff {

T getData();

void putData(T stuff);

}

class IntStuff implements Stuff {

private Integer stuff;

public Integer getData() {

return stuff;

}

public void putData(final Integer stuff) {

this.stuff = stuff;

}

}

如果查看生成的字节码,您将看到:在main方法中,擦除了接口方法

java.lang.Object Stuff.getData()

void Stuff.putData(java.lang.Object)

被调用.那个方法,在IntStuff中用签名实现

java.lang.Object getData()

void putData(java.lang.Object)

两者都用修饰符公共桥合成,委托给“真实”方法

java.lang.Integer IntStuff.getData()

void putData(java.lang.Integer)

第一个合成方法只返回Integer结果,而第二个合成方法在调用putData(Integer)之前执行从Object到Integer的转换.

如果将stuff变量更改为IntStuff类型,则调用两个Integer方法而不是合成Object方法.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值