java判断接口引用是否指向实现类 20C

Interface A = new implClassB();
Interface A = new implClassC();

执行Interface A = new implClassB(); 方法
有没有语句判断 A是指向implClassB而不是implClassC

0

4个回答



class Untitled {
    public static void main(String[] args) {
        I a = new A();
        I b = new B();

        System.out.println(a.getClass().getName());
        System.out.println(b.getClass().getName());
    }
}

interface I
{

}
class A implements I
{

}
class B implements I
{

}

输出
A
B

0
 instanceof
 A instanceof implClassB
0
caozhy
贵阳挖掘机马善福,自备车辆专业挖游泳池 这个办法也挺好。我补充下,用这个办法,A instanceof implClassB,那么A不但可以是implClassB,还可以是implClassB的派生类。而我上面的方法,只能是精确得到类名
11 个月之前 回复
System.out.println(A.getClass().getName());
0

Objects.equals(a.geClass(), implClassB.class)

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
向下转型 -- 父类、抽象类、接口引用指向子类、实现类
只能调用父类、抽象类或抽象类中已经有的方法,才能使用。如果子类中有的方法,在父类中没有,则不能调用格式:父类 对象 = new 子类构造函数();对象.方法();        只能调用子类和父类中共有的方法或接口:接口  对象 = new 实现类构造函数();对象.方法();     只能调用接口和实现类中共有的方法...
Java中,如何判断一个类是否实现了某个接口
if(对象名 instanceof 接口名){ }  
Java 中到底是应该用接口类型 还是实现类的类类型去引用对象?
标题意思有点绕,说白了就是下面使用方式的选择问题 //implA 为接口 ClassB为其实现类 implA A=new ClassB();//接口类型的引用变量A 去接收对象地址 or ClassB A=new ClassB();//类类型的引用变量A 去接收对象地址 先附上有关接口的相关知识 知乎 Java 中的接口有什么作用? 博客园 深入理解Java的接口和抽象类 我们...
【java】判断两个引用类型的变量是否指向同一地址
问题:有两个对象obj1和obj2,都是MyObject类的实例。如何比较这两个对象是否指向相同的内存地址? 分情况讨论: 1、如果 MyObject类的equals方法和hashcode方法被重写: 如果obj1 == obj2 为真,则两者指向相同的内存地址。 2、如果 MyObject类的equals方法和hashcode方法没有被重写: 1. 如果obj1 == obj2 为真...
如何判断两个引用是不是指向的同一个元素
其实引用,是一种受限的指针,所以看两个引用是不是指向的同一个元素,就是在比较两个引用指向的地址是不是同一块。引用必须被初始化。 template<typename T> bool CheckReference(T& t,T& b) { if(&t == &b) { //引用t和引用b指向的是同一个元素 return true; }...
Java父类引用指向子类实例的用法
1.适合使用(父类引用指向子类实例)的情况: 父类是接口 接口有多个实现类,通过接口引用可以指向任何一个实现类,调用其方法,实现多态,传递参数时可以使用 2.不适合使用(父类引用指向子类实例)的情况: 父类不是接口,封装了一批公共方法,便于子类调用 ...
如何判断一个实例或者一个类实现某接口呢?
http://stackoverflow.com/questions/10165887/how-to-check-if-an-object-implements-an-interface How to check if an object implements an interface? For an instance Character.Go
一个接口有多个实现类,当调用接口中的方法时,如何判定用的是哪个实现类
一、简单例子: 1. 直接new一个实例,这样肯定知道用的哪个实例 2. 定义接口类型的变量,用某个实例去初始化。。。这样也是肯定知道用的哪个实例 一般我们用第二种方式有一个好处,如果以后要改动,那么只需要修改其引用的实例,改动较少! 举个例子:A接口,A1,A2,A3实现A接口,有一个eat方法,A1:吃饭,A2:吃鱼,A3:吃肉 需要得到"吃肉",那么 A a = n
List<?> list= new ArrayList<?>为什么这样写 接口引用指向实现类的对象
接口的灵活性就在于“规定一个类必须做什么,而不管你如何做”。我们可以定义一个接口类型的引用变量来引用实现接口的类的实例,当这个引用调用方法时,它会根据实际引用的类的实例来判断具体调用哪个方法,这和上述的超类对象引用访问子类对象的机制相似。 [java] view plain copy   //定义接口InterA   interface InterA
java集合体系--Collecion的各种子接口、实现类(上)
Collection集合体系Map体系●Java集合大致分为Set、List、Queue、Map四种体系。●最常用的集合:HashSet、TreeSet、ArrayList、ArrayDeque、LinkedList、TreeMap●Iterator接口也是Java集合框架的成员,但它与Collection系列,Map系列的集合不一样:Collection、Map系列集合主要用于盛装其他对象,而I...
Java中引用分类与三个Map接口实现类
引用分类 强引用 StrongReference:引用指向对象,gc(Garbage collection)运行时不回收 软引用 SoftReference :gc运行时可能回收(jvm内存不够) 弱引用 WeakReference:gc运行时立即回收 虚引用 PhantomReference:类似于无引用,主要跟踪对象被回收的状态,不能单独使用,必须与引用队列(ReferenceQueu...
风趣探讨:为什么需要一个接口,一个接口的实现类,而不是直接调用类里的方法
之所以叫风趣探讨,我觉得这个话题非常有意思,也非常重要。知乎上有个老哥说:能问这个问题,说明(1)你很会思考(2)编程水平还是处于起步阶段。(https://www.zhihu.com/question/20111251)我觉得他说的很有道理。那么,这个问题,我们弄懂了,透彻了,并且身体力行了,我们的面向接口思想或许就能提升。这样写的第一个作用:“不如直接就在这个类中写实现方法岂不是更便捷”,你怎...
java中对象的引用类型及判断对象是否存活的算法
堆中几乎存放着Java世界中所有的对象实例,垃圾收集器在对堆回收之前,第一件事情就是要确定这些对象哪些还“存活”着,哪些对象已经“死去”(即不可能再被任何途径使用的对象) 1.引用计数算法    很多教科书判断对象是否存活的算法是这样的:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值加1;当引用失效时,计数器减1;任何时刻计数器都为0的对象就是不可能再被使用的。   (1)
【Bug】同一接口多实现类下dubbo调用服务错乱
有两个项目A、B,各自有一定数量实现了CommonService接口的实现类,而当将这些实现类配置成dubbo服务供彼此消费时,会出现实际消费的服务并不符合预期 A项目提供两个服务并消费三个服务 &amp;amp;lt;dubbo:service interface=“com.xxx.CommonService” ref=“receiveService” /&amp;amp;gt; &amp;amp;lt;dubbo:service inter...
判断某个类是否实现了某个接口或者继承了某个父类的方法
一、背景:有的时候需要动态判断一个类是否实现了某个接口或者继承了某个父类。其实java里面已经有方法了,只是平时用的机会很少,在此mark一下   二、上代码 import java.io.Serializable; public class IsAssignableFromTest implements Serializable{ /** 序列号 */ pr...
并发Queue之BlockingQueue接口及其实现类
1、下面先简单介绍BlockingQueue接口的五个实现:ArrayBlockingQueue:基于数组的阻塞队列实现,在ArrayBlockingQueue内部,维护了一个定长的数组,以便缓存队列中的数据对象,其内部没实现读写分离,也就意味着生产和消费者不能完全并行。长度是需要定义的,可以指定先进先出或者先进后出,因为长度是需要定义的,所以也叫有界队列,在很多场合非常适合使用。LinkedBl...
关于java接口、父类子类之间调用和强制转换的关系
如果使用接口的引用去方位它的实现类的方法,那么一定只能访问实现类中接口所定义的那个方法,其他的变量和方法是无法访问的 如果使用父类的引用去访问子类的方法例如,A是个父类,b继承了A,那么如果A did= new b();那么did只能访问A类和b类共有的部分,如果想 访问b的其他方法和变量那么必须加上强制转换,((b)did),组合模式中就使用到了强制转换
如何知道接口被那个实现类实例化
public class son implements ParentInterface{ @Override public void speak(String name) { // TODO Auto-generated method stub System.out.println(&quot;123453&quot;); } public static void main(String[...
c#中接口实现类的动态调用实现
最近一个项目要实现接口的动态调用。一个接口有多个实现类,但是要在程 序外(比如说配置文件或者数据库表里)定义到底应该掉用哪一个实现类,这样 可以极大的提高程序的扩展性,调试也方便维护,多人同时使用一个程序时也可 以根据不同的需要写自己的实现类。 下面讲具体的实现方法,这里主要用到的是反射的方法。一、首先先建一个接口IAnimal,该接口里面就一个Cry的方法。
java Collection 集合接口关系及对应实现类
先上图: Collection: 根接口,包含add(),remove(),contains(),isEmpty(),addAll()…等方法 Set:不允许重复元素,Set接口的实现类有 HashSet(基于哈希算法)和TreeSet(基于平 衡二叉搜索树)。注意 TreeSet 实现 SortedSet接口。 List:可以包含重复元素并且元素是有序的,实现类有 LinkedL...
一个接口有多个实现类时,调用接口时,如何判定调用的哪个实现类?
看前同事的代码中,两个不同的线程走的是同一个方法实现,但是两个线程除了查询的数据库表不一致,其他逻辑完全一致。所以用到了一个接口多个实现类,每个实现类查询不同数据库。记录一下接口是怎么调用不同的实现类的。 定时任务一: 定时任务二: 同时继承了一个实现类AbstractSendDataTask   applicationContext.xml       ...
go 类型转换 判断类型 是否实现接口
1,判断类型,仅和switch配合使用,且obj为接口类型 switch obj.(type) 2,类型转换,varI必须是一个接口变量,否则会报错;T为类型 if v, ok := varI.(T); ok { //process(v) v 是 varI 转换到类型 T 的值 } 3,某个实例是否实现接口 var v interface{} = 实例 if sv, o...
面向对象程序
面向对象程序,接口,实现类,父类引用子类
java基础--(4)--判断项目中是否有slf4j的实现类
  /** * 判断项目中是否有slf4j的实现类 */ @org.junit.Test public void test() { try { Enumeration&amp;lt;URL&amp;gt; resources = ClassLoader.getSystemResources(&quot;org/slf4j/impl/Static...
一个接口多个实现,指定实现类
目的:一个接口多个实现时,根据不同的条件调用不用的实现1、有如下接口public interface Pay { public Object pay(Map&amp;lt;String,Object&amp;gt; map); }2、有如下两个实现实现一:@Service(&quot;weixinPay&quot;) public class WeixinPay implements Pay{ @Override ...
获取java类中的具体泛型实现类
先科普下,泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。 在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要...
Java的多个接口和多个类的方法引用和方法调用的练习测试
接口1: 接口2: 接口二的抽象方法的形参为接口1. 类1: 类1中有一个无参无返回值的成员方法. 类2: 类2中也有一个无参无返回值的成员方法. 测试类以及运行效果1: show()方法里面,ni调用了fun()方法,fun()的参数为Demo对象的方法引用.在主方法中调用show()方法时,方法中的参数传入的是Demo02的对象引用了该对象的成员方法,(实际...
java的实现类可以添加接口外的方法吗
可以添加,但是在声明对象时只有声明本身类才能调用到。 例如:接口A,有ab两个方法,类S实现A,并增加了方法c。 声明: A s=new S();则s只能调用ab,不能调c。 声明S s=new S();s可以调用abc方法。 ...
Java工程师常见面试题集锦(二)互联网人必看!(附答案及视频教程,持续更新)
大牛也怕面试题,尤其是基础题,在面试中如果出现一两题回答不准确很有可能你就被拒之门外了。CSDN学院年终倾情奉献,海量面试题(附答案)免费分享,帮助大家顺利过关。 本周继续更新10道面试题。 Java工程师常见面试题集锦(一)互联网人必看!https://blog.csdn.net/CSDNedu/article/details/85602533 如果觉得文字学习较慢,也可以跟着老师一起视...
spring注解识别一个接口的多个实现类方法
spring注解识别一个接口的多个实现类方法,在引用类中匹配到正确的实现类接口如下:public interface Filter { public String doFilter(String param); }接口实现类:public class TimeFilter implements Filter { @Override public String doFilter(...
java为什么调用接口,就可以调用到接口的实现类的方法
这是java 三大特性之一:泛型的表现 即 接口声明的变量 被赋值为该接口实现类的对象的引用 如 List list = new ArrayList( ); 这里 List 是接口, ArrayList 是List 的实现类 ...
2018.09.8随笔Java向上向下转型和接口类指向实现类
今天本来打算复习Spring,然后看到这段代码 private ICustomerDao customerDao = new CustomerDaoImpl(); 就很疑问,为什么可以用接口类去实现一个实现类,按照套路,查资料;发现原来也是一种多态的体现,类似于继承,但事实这样定义只能调用接口类的方法,不能使用自己类中定义的方法.网上查资料原来一直用的 List list=new ...
JAVA父类引用指向子类对象
1.什么是多态? 方法的重写、重载与动态连接构成多态性 Java之所以引入多态的概念,原因之一就它在类的继承上的问题和C++不同,后者允许多继承,这确实给其带来了非常强大的功能,但是复杂的继承关系也给C++开发者带来了更大的麻烦,为了规避风险,Java只允许单继承,势必在功能上有很大的限制,所以,Java引入多态性的概念以弥补这点不足,此外,抽象类和接口也是解决单继承规定限制的重要手段.同时,...
Java注解(2)--根据自定义注解及接口获取支持的实现类
该方法适用于面向接口编程时,一个接口有多个实现类,需要根据实现类的自定义支持注解来获取该实现类,并执行实现类的具体方法。 一、自定义注解 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; impo...
Jvm 标记对象是否被引用的两种方法
1、引用计数:通过保存某个对象的所有引用数,来管理对象。当引用数为0时,就会被回收。 对象(object)内部维护一个计数器(不能小于0),当计数器是0的时候,对象销毁。当线程A创建一个对象,即 new object()时,object的引用计数=1,如果我们想把这个object给线程B,首先是给object的引用计数+1,此时object的引用计数=2,然后传递给线程B,B在使用完obje
java多态父类引用指向子类对象的问题
java 父类引用指向子类对象时,成员变量的编译和运行都是看左边,而方法编译看左边,运行看右边。  class ParaentClass{ public int i = 10; public void test(){ System.out.println(&quot;father&quot;); } } public class SubClass extends ParaentClass{ publi...
通过接口获取所有实现类以及通过注解获取实现类的思路
近日,工作上被安排修改项目,别人写的一套内外网同步系统,修改成一套上报下发系统,处理很复杂,在原先那人的基础上修改了不少源代码,比较痛苦的是修改他的源代码,必须要看懂全部代码,改的才能顺利进行下去,其实这是违反面向对象的一项重要原则——开闭原则,像这样的代码,换个人写,时间成本会很高,而如果做好了面向对象的设计的话,在修改的时候,只需实现预留好的接口就可以实现,所以最近一直在构思如何重构整个项目,
Java反射方法asSubclass判断一个类是否是另一个类的子类
在Java中我们判断一个类是否是另外一个类的实例对象通常使用instanceof a instanceof B 另外我们还有一个方法是asSubclass,它将一个类转换成另外一个的实例,如果转换异常就会抛出ClassCastException异常,也就是这个类不是另外一个类的实例;所以我们可以通过它抛出异常的方式来判断一个类是否是另外一个类的实例; import java.lang...
@resource、@Autowired、@Service在一个接口多个实现类中的应用
Spring在没有引入注解之前,传统的Spring做法是使用.xml文件来对bean进行注入,所有的内容都需要配置在.xml文件中,使配置和编程分离,却增加了可读性和复杂度。        Spring注解将复杂的配置文件用简单@xxx代替,当出现一个接口多个实现类的时候,究竟是用的哪个实现类呢? 示例代码: public interface DataDao{ }
C#生成静态网页源码
c#可以生成静态网页,判断是否生成网页,只要引用dll就可以,调接口方法