Javadoc表示String
实施Comparable<String>
但是,以下代码返回false
:
String.class.isAssignableFrom(Comparable.class)
如何检查某个类是否实现了给定的接口?
答案 0 :(得分:5)
你误解了isAssignableFrom(cls)
的作用。引用Javadoc:
确定此Class对象表示的类或接口是否与指定的Class参数表示的类或接口相同,或者是它们的超类或超接口。如果是这样,它返回true;否则返回false。如果此Class对象表示基本类型,则如果指定的Class参数恰好是此Class对象,则此方法返回true;否则返回true。否则返回false。
这意味着当你检查时
int ini()
{
int *tab;
int i, j, a, b;
for (i = 0; i < N; i++)
tab = (int*)malloc(N*M*sizeof(int));
if (tab == NULL)
return -1;
scanf_s("%d %d", &a, &b);
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
{
*(tab + N*i +j ) = rand() % (b - a + 1) + a;
}
}
return tab;
}
int main()
{
int i, j, *tablica = ini();
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
{
printf("%d ", *(tablica + N*i + j));
}
printf("\n");
}
system("PAUSE");
return 0;
}
你实际上正在检查String.class.isAssignableFrom(Comparable.class)
类是String
类的超类,而不是相反。你应该检查:
Comparable
答案 1 :(得分:1)
您必须反转对象和参数。 而不是
String.class.isAssignableFrom(Comparable.class)
你必须使用
Comparable.class.isAssignableFrom(String.class)
来自javadoc:
确定此Class对象表示的类或接口 与相同,或者是的超类或超级接口, 由指定的Class 参数表示的类或接口。它 如果是,则返回true;否则返回false。