java中判断一个对象是否实现了某个接口

 我来答
神伮
2013-11-10 · TA获得超过106个赞
知道答主
回答量:208
采纳率:0%
帮助的人:192万
展开全部
/*************************************************************************** * 判断对象o实现的所有接口中是否有szInterface * 2008-08-07 修正多继承中判断接口的功能, * 以及修正接口继承后的判断功能 * package test; * * public interface ITest extends Serializable * public class Test1 implements ITest * public class Test2 extends Test1 * public class Test3 extends Test2 * * isInterface(Test3.class, "java.io.Serializable") = true * isInterface(Test3.class, "test.ITest") = true * @param c * @param szInterface * @return */ public boolean isInterface(Class c, String szInterface) { Class[] face = c.getInterfaces(); for (int i = 0, j = face.length; i < j; i++) { if(face[i].getName().equals(szInterface)) { return true; } else { Class[] face1 = face[i].getInterfaces(); for(int x = 0; x < face1.length; x++) { if(face1[x].getName().equals(szInterface)) { return true; } else if(isInterface(face1[x], szInterface)) { return true; } } } } if (null != c.getSuperclass()) { return isInterface(c.getSuperclass(), szInterface); } return false; }
郭某人来此
2015-10-06 · TA获得超过1645个赞
知道答主
回答量:952
采纳率:100%
帮助的人:88.2万
展开全部
使用instanceof 关键字,instanceof是Java的一个二元操作符,是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,也可以测试接口。
public class Test
{
public static void main(String[] args)
{
Student student = new Student();
System.out.println(student instanceof Person);
}
}

class Student implements Person
{
}

interface Person
{
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
198901245631
推荐于2016-07-22 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1711万
展开全部
实际思路:先通过类的getInterfaces方法获取到当前类实现的所有接口(包含父类接口),之后分别与要判断是否实现的接口进行比较,如果返回true的话,表示实现了,否则表示未实现:
举例:
public boolean isInterface(Class c, String szInterface)
{
Class[] face = c.getInterfaces();//获取类c实现的所有接口
for (int i = 0, j = face.length; i < j; i++)
{
//判断类接口中是否有与要判断的接口一致
if(face[i].getName().equals(szInterface))
{
return true;
}
else
{
//判断其父类是否实现了这个接口
Class[] face1 = face[i].getInterfaces();
for(int x = 0; x < face1.length; x++)
{
if(face1[x].getName().equals(szInterface))
{
return true;
}
else if(isInterface(face1[x], szInterface))
{
return true;
}
}
}
}
if (null != c.getSuperclass())
{
//递归,依次判断是否实现父类接口
return isInterface(c.getSuperclass(), szInterface);
}
return false;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
y6198078
2013-11-15 · 超过20用户采纳过TA的回答
知道答主
回答量:70
采纳率:0%
帮助的人:35.5万
展开全部
如果对象的类为XXX 实例化名称为xxx 接口名为YYY
XXX xxx = new XXX();
可以用 xxx instanceof YYY来判断
if(xxx xxx instanceof YYY){
...
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hdparrot
2013-11-15 · TA获得超过2403个赞
知道小有建树答主
回答量:1385
采纳率:0%
帮助的人:1145万
展开全部
用这个来判断就可以了:a instanceof b
a是否是b的实例。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式