【发布时间】:2012-06-01 03:29:12
【问题描述】:
我有一个 Java 方法必须多次执行一段代码:
// Obtengo los 7 bits de direccion
clockStateIndex = dataStateIndex;
for(int bit = 7; bit > 0; --bit){
clockStateIndex = clockSource.nextClearBit(clockStateIndex); // Siguiente bit en SCL
clockStateIndex = clockSource.nextSetBit(clockStateIndex);
testIndex = (clockSource.nextClearBit(clockStateIndex) - clockStateIndex)/2; // Busco la mitad del bit clock
bitSet(direccion, data.get(testIndex), bit); // Compruebo SDA en la mitad del bit SCL
}
// Obttengo el bit R/W
clockStateIndex = clockSource.nextClearBit(clockStateIndex); // Siguiente bit en SCL
clockStateIndex = clockSource.nextSetBit(clockStateIndex);
testIndex = (clockSource.nextClearBit(clockStateIndex) - clockStateIndex)/2; // Busco la mitad del bit clock
rwBit = data.get(testIndex); // Obtengo el estado del bit R/W en el medio del bit SCL
// Obtengo el bit de ACK
clockStateIndex = clockSource.nextClearBit(clockStateIndex); // Siguiente bit en SCL
clockStateIndex = clockSource.nextSetBit(clockStateIndex);
testIndex = (clockSource.nextClearBit(clockStateIndex) - clockStateIndex)/2; // Busco la mitad del bit clock
ackBit = data.get(testIndex); // Obtengo el estado del bit R/W en el medio del bit SCL
// Si tengo un ACK obtengo los 8 bits de dato
if(ackBit == false){
for(int bit = 8; bit > 0; --bit){
clockStateIndex = clockSource.nextClearBit(clockStateIndex);
clockStateIndex = clockSource.nextSetBit(clockStateIndex);
testIndex = (clockSource.nextClearBit(clockStateIndex) - clockStateIndex)/2;
bitSet(i2cData, data.get(testIndex), bit);
}
}
如你所见:
clockStateIndex = clockSource.nextClearBit(clockStateIndex);
clockStateIndex = clockSource.nextSetBit(clockStateIndex);
testIndex = (clockSource.nextClearBit(clockStateIndex) - clockStateIndex)/2;
重复很多次。我无法创建#defines 来简化我的代码,比如 nextBit();替换该代码。有没有其他方法可以简化它? 如果创建一个方法,我将必须传递两个大小约为 200 个元素的 BitSet 并返回 2 个 int 元素(我不知道在 Java 中这样做很热,因为我没有像 C 中那样的指针)
希望你能帮助我:)
【问题讨论】:
-
实际上,当谈到Java 中的对象时,您所拥有的只是指针(引用),而根本没有对象。将对象传递给方法需要地址所需的字节数(通常为 4 或 8 个),而与对象的大小无关。创建一个方法。