一个接口,有多个实现类,在使用这个接口的时候,如何判断用的是哪个实现类。

问题描述

一个接口,有多个实现类,在使用这个接口的时候,如何判断用的是哪个实现类。

今天读程序的时候,突然遇到的问题。hibernate的Session接口,查看文档发现它被4个类实现了,所以就有疑问,当我开始调用Session中的方法时,它到底是被哪个实现类所实现的?

解决方案

调用getClass方法,会返回对应的类名。

解决方案二:

调用的Session时,它的实例肯定是指定到了一个具体的实现类的,就跟Spring的依赖注入一样

解决方案三:

给接口定义一个protected的enum。实现类去赋值enum,.用的时候判断enum就知道是哪个实现类了。或者getclass(),就知道是哪个类了。

时间: 2024-10-08 14:30:50

一个接口,有多个实现类,在使用这个接口的时候,如何判断用的是哪个实现类。的相关文章

构建可反转排序的泛型字典类(7)--实现IDictionary接口

7. 实现IDictionary接口 前面做了很多努力,现在终于可以实现 IDictionary接口了.当然,之所以要先实现它,目的之一还是为了之前留下的 一点遗憾:在foreach中使用DictionaryEntry访问集合中的元素. 需要 注意,由于ReversibleSortedList类最主要的接口是泛型IDictionary接口,实 现非泛型IDictionary接口主要是考虑到兼容性,试想,你的项目是用.NET 1.0 实现的,但现在你需要使用.NET 2.0继续完善程序并使用到了一

class-如何简洁明了的描述Android中活动、实例、对象、类、抽象类、接口之间的关系?

问题描述 如何简洁明了的描述Android中活动.实例.对象.类.抽象类.接口之间的关系? 如何简洁明了的描述Android中活动.实例.对象.类.抽象类.接口之间的关系? 解决方案 实例.对象.类.抽象类.接口是java的语法,和android没有关系. 抽象类是不可以实例化并且包含抽象成员的类,一种特殊的类. 类的实例叫做对象 接口约定了一个类必须实现哪些方法 android的活动(activity)是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务 解决方案二: 抽象类和接

servlet runnable-继承了httpservlet类并实现runnable接口 那么程序入口是什么

问题描述 继承了httpservlet类并实现runnable接口 那么程序入口是什么 继承了httpservlet类并实现runnable接口 那么程序入口是什么? 是servlet的init();方法 还是实现多线程时的run():方法??? 解决方案 那要看你怎么用了,是作为servlet呢还是一个任务,前者需要配置,由容器实例化的;后者就是可以作为一个任务来执行,需要自己实例化,这样就是一个普通的任务了.

匿名对象-java中接口,匿名类,实现这个接口类的方法

问题描述 java中接口,匿名类,实现这个接口类的方法 不能直接new一个接口,但是接口再被实现后,再new这个接口,并写上实现这个接口的方法,那么new的这个接口如果没有赋值引用,那么new的这个接口就是一个匿名类,这么理解对不 解决方案 没有名字的类就是匿名类,没有名字的对象就是匿名对象. 判断标准,你能不能说出类的名字.说不出肯定是匿名类. 解决方案二: 你看下这个文章 应该能理解了匿名类直接new接口 解决方案三: 利用匿名内部类实现Java接口方法java实现接口类Java面向对象 匿

Java 继承Thread类和实现Runnable接口的区别

ava中线程的创建有两种方式: 1.  通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2.  通过实现Runnable接口,实例化Thread类     在实际应用中,我们经常用到多线程,如车站的售票系统,车站的各个售票口相当于各个线程.当我们做这个系统的时候可能会想到两种方式来实现,继承Thread类或实现Runnable接口,现在看一下这两种方式实现的两种结果. public class TheadDemo extends Thread{ private

java实现多线程的两种方式继承Thread类和实现Runnable接口的方法_java

实现方式和继承方式有什么区别呢? *区别: *继承Thread:线程代码存放在Thread子类run方法中 *实现Runnable:线程代码存放在接口的子类的run方法中 *实现方式的好处:避免了单继承的局限性 *在定义线程时,建议使用实现方式,当然如果一个类没有继承父类,那么也可以通过继承Thread类来实现多线程 *注意:Runnable接口没有抛出异常,那么实现它的类只能是try-catch不能throws *Java对多线程的安全问题提供了专业的解决方式就是同步代码块synchroniz

多线程——继承Thread 类和实现Runnable 接口的区别

  java中我们想要实现多线程常用的有两种方法,继承Thread 类和实现Runnable 接口,有经验的程序员都会选择实现Runnable接口 ,其主要原因有以下两点:   首先,java只能单继承,因此如果是采用继承Thread的方法,那么在以后进行代码重构的时候可能会遇到问题,因为你无法继承别的类了.   其次,如果一个类继承Thread,则不适合资源共享.但是如果实现了Runable接口的话,则很容易的实现资源共享.   通过下面的实例可以清晰的看出两种方式的区别所在. 1.继承Thr

action 没有跳转-Action中调用另一个类中的方法时没有跳转,但是新建的其他测试类就可以跳转,WHY?

问题描述 Action中调用另一个类中的方法时没有跳转,但是新建的其他测试类就可以跳转,WHY? action中调用EmailUtil中的sendHtmlMail方法: public void forgetPassword() throws Exception { String email = request.getParameter("email"); User u=userService.getByEmail(email); Json json=new Json(); if (St

java-我想根据这个类,写个接口,别人登录时,可以调用这个接口,显示类里面的信息

问题描述 我想根据这个类,写个接口,别人登录时,可以调用这个接口,显示类里面的信息 @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id", updatable = false, nullable = false) private Long id; //作业列表ID @Column(length = 200, name = "topic", nullable = false) p