我正在使用 ListView 来显示一些 JSON 数据,并希望根据其类型(艺术家、发布、标签...)显示每个结果。
我将使用由每种结果类型实现的接口:
public interface Result {
public Int getId();
public String getThumb();
// ...
}
我想知道这些选择中的哪一个是最好的解决方案(我对更好的事情持开放态度,这正是我的想法):
- 在交互中创建一个(因此继承的类必须像在方法中
enum ResultType
一样返回自己的值ResultType.ARTIST
getType()
- 使用检查实例类型
isInstance()
我想知道执行与此 C 代码(函数指针数组)等效的操作的最佳方法是什么,因为我想避免使用许多if
/else
语句。
typedef struct s_func {
const char *type_name;
void* (*func_pointer)(void *result_infos);
} t_func;
static t_func type_array[] = {
{"artist", artist_function},
{"label", label_function},
// ....
{NULL, NULL}
}
void check_type(const char *type_string)
{
int i, j = 0;
char *key_value;
// compare string and array key
while (type_array && type_array[i][0]) {
key_value = type_array[i][0];
// if key match
if (type_string && strncmp(type_string, key_value, strlen(type_string)) == 0) {
type_array[i][1](); // call appropriate function;
}
i++;
}
}
我猜它会使用 aHashMap
但是(我可能错了)它似乎没有文字符号。有没有简单的方法来构建一HashMap
对?
谢谢