Я пытаюсь преобразовать код Objective C в Java, но у меня есть небольшая проблема с пониманием, как это сделать.
Вот код Objective C:
+ (StPacket *)initialize:(UInt32)aPacketId packetType:(StPacketType)aPacketType operationType:(StOperationType)aOperationType
objectOid:(NSString*)aObjectOid objectId:(UInt32)aObjectId dataSize:(UInt32)aDataSize dataHash:(NSString*)aDataHash
dataType:(StPacketDataType)aDataType packetData:(NSData*)aPacketData {
StPacket * packet = nil;
switch (aPacketType)
{
// Special packets
case ST_OBJECT_TYPE_INFO_START:
{
packet = [[StPacketInfoStart alloc] init];
break;
}
case ST_OBJECT_TYPE_INFO_END:
{
packet = [[StPacketInfoEnd alloc] init];
break;
}
}
if (packet)
{
[packet setPacketData:aPacketId packetType:aPacketType operationType:aOperationType objectOid:aObjectOid objectId:aObjectId
dataSize:aDataSize dataHash:aDataHash dataType:aDataType packetData:aPacketData];
}
return [packet autorelease];
}
StPacketInfoStart init:
- (id)init {
self = [super init];
if (self)
{
locale = nil;
serverApiVer = nil;
deviceId = 0;
}
return self;
}
Итак, я сделал это на Java следующим образом:
public RPCPacket( int apacketId,
RPCPacketType apacketType,
RPCOperationType aoperationType,
String[] aobjectOid,
int aobjectId,
int adataSize,
String[] adataHash,
RPCPacketDataType adataType){
RPCPacket packet=null;
switch(apacketType){
case ST_OBJECT_TYPE_INFO_START:
{
packet = new InfoStartRPCPacket();
break;
}
case ST_OBJECT_TYPE_INFO_END:
{
packet = new InfoEndRPCPacket();
break;
}
}
packet = new RPCPacket(adataSize, apacketType, aoperationType, adataHash, adataSize, adataSize, adataHash, adataType);
}
Мой вопрос заключается в том, является ли правильный путь, и если код в Java делает то же самое, что и в Objective C, потому что теперь я получаю сообщение об ошибке: «Неявный супер-конструктор RPCPacket () по умолчанию не определен Конструктор. Должен определить явный конструктор ".
Есть идеи?