我想將一些代碼從Java轉換爲Objective-C,並且我很難轉換Java通用部分。例如,Java中的類聲明我相信是說當前類擴展了任何作爲Component類的子類的類,在Objective-c中,這是否意味着您只需擴展Component類?幫助將Java轉換爲Objective-C
任何人可以提供的援助將不勝感激。繼續前進將幫助我轉換其他類似的代碼片段。由於
的Java:
public class ComponentMapper<T extends Component> {
private Class<T> classType;
public ComponentMapper(Class<T> type, World world) {
this.type = ComponentTypeManager.getTypeFor(type);
this.classType = type;
}
public T get(Entity e) {
return classType.cast(em.getComponent(e, type));
}
}
的Objective-C:
@interface ComponentMapper : Component
{
ComponentType* componentType;
EntityManager* entityManager;
id classType;
}
- (id) init:(id) componentType World:(World*) world;
- (id) get:(Entity*) entity; // can this just return Entity instead
@end
@implementation ComponentMapper
- (ComponentMapper*) init:(id) type World:(World *) world {
if (self = [super init]) {
// should be a call to getEntityManager()
self->entityManager = [world entityManager];
self->componentType = [ComponentTypeManager getTypeFor:type];
self->classType = type;
}
return self;
}
- (id) get:(Entity*) entity
{
return [classType cast:[em getComponent:e param1:type]];
}
@end
使用'Class'是Java中的一個成語,它被設計用來對Java類型的對戰式擦除。這就是其中的一種情況,你應該非常小心地避免翻譯成「一字一句」的成語,因爲這些地區圍繞廢話的可能性非常高。最好的方法是嘗試將現有設計用作新項目的靈感而不是模板。當我將Java翻譯成C#時,它非常適合我 - 儘管它更接近適合,但仍足以證明重大重構的合理性。 –
dasblinkenlight
2011-12-30 22:45:44