当前位置:首页 » 编程语言 » java接口及实现方法

java接口及实现方法

发布时间: 2024-05-04 11:05:08

java 怎么通过反射获取并实现这个类里面的接口,并且实现接口中的方法

获取当前线程的ClassLoader,通过ClassLoader获取当前工作目录,对目录下的文件进行遍历扫描。过滤出以.class为后缀的类文件,并加载类到list中,对list中所有类进行校验,判断是否为指定接口的实现类,并排除自身。返回所有符合条件的类。

这个方没有考虑不同的文件格式。当程序打成jar包,发布运行时,上述的这种遍历file的操作就失效了。只能扫描到当前方法的同级目录及其子目录。无法覆盖整个模块,遍历文件的逻辑太啰嗦,可以简化。

(1)java接口及实现方法扩展阅读:

Java使用注意事项:

1、如果没有定义环境变量classpath,java启动jvm后,会在当前目录下查找要运行的类文件。

2、如果指定了classpath,那么会在指定的目录下查找要运行的类文件。

3、PATH环境变量。作用是指定命令搜索路径,在命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。

4、需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好PATH变量后,就可以在任何目录下执行javac/java等工具了。

❷ Java实现Comparable接口

Java lang Comparable接口中唯答纤一的方法是pareTo() 在该方法中可以进行简单的相等比较以及执行顺序比较 接口实现框架如下 [java] view plainprint?

public class ComparableImpl implements Comparable<ComparableImpl> {

@Override public int pareTo(ComparableImpl o) { // TODO Auto generated method stub return }

}一个类实现了Comparable接口 则说明它的实例具有内在的排序关系 就可以跟多种泛型算法以及依赖于该接口的集合实现进行协作 依赖于比较关系的类包括有序集合类TreeSet和TreeMap 以及工具类Collections和Arrays 若一个数组中的元素实现了Comparable接口 则可以直接使用Arrays类的sort方法对这个数组进行排序 Java平台库中的所有值类(value classes)都实现了Comparable接口

歼卜Comparable的规范说明如下 将当前这个对象与指定对象进行顺序比较 当该对象小于 等于或大于指定对象时 分别返回一个负整数 零或者正整数 如果由于指定对象的类型而使得无法进行比较 则抛出ClassCastException异常

pareTo方法的实现必须满足如下几个限制条件 自反性 对称性 传递性和非空性

一般氏举穗来说 paraTo方法的相等测试应该返回与equals方法相同的结果 如果相同 则由pareTo方法施加的顺序关系被称为 与equals一致 如果不同 则顺序关系被称为 与equals不一致 如果一个类的pareTo方法与equals方法的顺序关系不一致 那么它仍然能正常工作 只是 如果一个有序集合包含了该类的实例 则这个集合可能无法遵循某些集合接口的通用约定 因为集合接口的通用约定是按照equals方法定义的 而有序集合使用了由pareTo施加的相等测试 下面是实现了Comparable接口的类 同时 该类还重写了equals和hashCode等方法 [java] view plainprint?

public abstract class ZLTextPosition implements Comparable<ZLTextPosition> {

public abstract int getParagraphIndex() public abstract int getElementIndex() public abstract int getCharIndex()

public boolean samePositionAs(ZLTextPosition position) { return getParagraphIndex() == position getParagraphIndex() && getElementIndex() == position getElementIndex() && getCharIndex() == position getCharIndex() }

@Override public int pareTo(ZLTextPosition position) { final int p = getParagraphIndex() final int p = position getParagraphIndex() if (p != p ) { return p < p ? }

final int e = getElementIndex() final int e = position getElementIndex() if (e != e ) { return e < e ? }

final int c = getCharIndex() final int c = position getCharIndex() if (c != c ) { return c < c ? } return }

@Override public boolean equals(Object obj) { if (this == obj) { return true } if (!(obj instanceof ZLTextPosition)) { return false }

final ZLTextPosition position = (ZLTextPosition)obj return samePositionAs(position) }

@Override public int hashCode() { return (getParagraphIndex() << ) + (getElementIndex() << ) + getCharIndex() }

@Override public String toString() { return getClass() getName() + + getParagraphIndex() + + getElementIndex() + + getCharIndex() }

lishixin/Article/program/Java/hx/201311/26372

❸ 如何去使用JAVA中的接口

接口就是一些标准,把一些标准的制度写成方法,例如一个汽车必须有四个轮子,就可以把制造汽车写为一个接口,而制造四个轮子为接口必须方法,实现它的类就必须要实现制造四个轮子的方法。

语宴困灶言、程序、框架的发展都是解耦、分离依赖性的过程,例如springIOC中,将接口的实现类都配置在xml中,如果更换实现类,只需修改xml文件,而不用去修改代码,这样就是降低依赖性。
这个东西只能自己慢慢体会,在一个可以尺行多看看java三个特征继承、封装、多态中的多态,理解了多态,接口就自然晌扮会用了。

❹ java 接口怎么用应该怎么实现

java语言不支持一个类有多个直接的父类(多继承),但可以实现(implements)多个接口,间接的实现了多继承
用法public class test implements 接口名称
当类实现了某个Java接口时,它必须实现接口中的所有抽象方法,否则这个类必须声明为抽象的

比较抽象类与接口
1, 抽象类与接口都位于继承树的上层
相同点
1, 代表系统的抽象层,当一个系统使用一颗继承树上的类时,应该尽量把引用变量声明为继承树的上层抽象类型,这样可以提高两个系统之间的送耦合
2, 都不能被实例化
3, 都包含抽象方法,这些抽象方法用于描述系统能提供哪些服务,但不提供具体的实现
不同点:
1, 在抽象类中可以为部分方法提供默认的实现,从而避免在子类中重复实现它们,这是抽象类的优势,但这一优势限制了多继承,而接口中只能包含抽象方法.由于在抽象类中允许加入具体方法,因此扩展抽象类的功能,即向抽象类中添加具体方法,不会对它的子类造成影响,而对于接口,一旦接口被公布,就必须非常稳定,因为随意在接口中添加抽象方法,会影响到所有的实现类,这些实现类要么实现新增的抽象方法,要么声明为抽象类
2, 一个类只能继承一个直接的父类,这个父类可能是抽象类,但一个类可以实现多个接口,这是接口的优势,但这一优势是以不允许为任何方法提供实现作为代价的三, 为什么Java语言不允许多重继承呢?当子类覆盖父类的实例方法或隐藏父类的成员变量及静态方法时,Java虚拟机采用不同的绑定规则,假如还允许一个类有多个直接的父类,那么会使绑定规则更加复杂,
因此,为了简化系统结构设计和动态绑定机制,Java语言禁止多重继承.而接口中只有抽象方法,没有实例变量和静态方法,只有接口的实现类才会实现接口的抽象方法(接口中的抽象方法是通过类来实现的),因此,一个类即使有多个接口,也不会增加Java虚拟机进行动态绑定的复杂度.因为Java虚拟机永远不会把方法与接口绑定,而只会把方法与它的实现类绑定.四, 使用接口和抽象类的总体原则:
1, 用接口作为系统与外界交互的窗口站在外界使用者(另一个系统)的角度,接口向使用者承诺系统能提供哪些服务,站在系统本身的角度,接口制定系统必须实现哪些服务,接口是系统中最高层次的抽象类型.通过接口交互可以提高两个系统之间的送耦合系统A通过系统B进行交互,是指系统A访问系统B时,把引用变量声明为系统B中的接口类型,该引用变量引用系统B中接口的实现类的实例。
public interface B
{
}
public class C implements B
{
}
public class A
{
}
B a = new C();
2, Java接口本身必须非常稳定,Java接口一旦制定,就不允许随遇更加,否则对外面使用者及系统本身造成影响
3, 用抽象类来定制系统中的扩展点
抽象类来完成部分实现,还要一些功能通过它的子类来实现

❺ Java中的接口怎么实现

举个面积的例子:在java中,定义一个接口,声明计算长方形面积和周长的抽象方法,再用一个类去实现这个接口,再编写一个测试类去使用这个接口。首先,接口必须单独存放,如果我们用eclipse编程的话,它们提示:The public type **** must be defined in its own file,意思是必须要定义在其自己的文件中,所以要为接口文件单独存放起来,举例,我们的接口滑扰要实现获到矩形的长,宽,面积,周长,所以定义以下的接口。public interface calrect {x0dx0apublic abstract int calarea();x0dx0apublic abstract int calgirth();x0dx0apublic abstract int getx();x0dx0apublic abstract int gety();x0dx0a}注意,定义接口就像定义类一样,接口的访问控制符只能用public,用public定义的接口可以被所有的类和包引用,而缺省的则只能罩纳被同一个包中的其他类和接口引用,这符合JAVA中访问控制符的一般要求,关于接口再引用其他接口则是后话。以上接口文件名为calrect.java.另外需要指出的是接口中不能给方法给出方法体。接下来,需要定义一个类来实现接口,因为不知道JAVA的内置矩形类是什么名,所以为了安全,将该类定义为RRect,这可以认为是一物让没种安全策略。关于implements,可以参考其他资料。该类引用了接口calrect,所以必须对calrect中的方法一一实现。//定义矩形类 应用接口class RRect implements calrect{private int x;x0dx0aprivate int y;public RRect (){x0dx0a x=3;y=4;x0dx0a}x0dx0apublic int calarea(){x0dx0a return x*y;x0dx0a}x0dx0apublic int calgirth(){x0dx0a return x*2+y*2;x0dx0a}x0dx0apublic int getx(){x0dx0a return x;x0dx0a}x0dx0apublic int gety(){x0dx0a return y;x0dx0a}x0dx0a}//接下来,定义一个测试类,所谓测试类,我理解为定义一个类,在其定义类RRect的对象,并验证其中的方法,看看是不是可以正常使用//定义Class1类x0dx0apublic class Class1{x0dx0aRRect rect;x0dx0apublic static void main(String []args){x0dx0a RRect rect=new RRect();x0dx0a System.out.println("矩阵的长"+ rect.getx());x0dx0a System.out.println("矩阵的宽"+ rect.calarea());x0dx0a System.out.println("矩阵的面积"+ rect.calarea());x0dx0a System.out.println("矩形的周长 "+rect.calgirth());x0dx0a}x0dx0ax0dx0a}运行结果:矩阵的长3x0dx0a矩阵的宽12x0dx0a矩阵的面积12x0dx0a矩形的周长 14注:接口单存放,接口实现类和测试类可以存放在一个文件中

热点内容
小数除法的计算法则 发布:2024-05-18 15:36:52 浏览:529
安卓网卡免驱动如何实现 发布:2024-05-18 15:25:15 浏览:859
8加6算法 发布:2024-05-18 15:04:25 浏览:737
名图16款尊享什么配置 发布:2024-05-18 14:55:37 浏览:584
我的世界怎样刷出32k服务器 发布:2024-05-18 14:32:32 浏览:565
c语言程序设计江宝钏 发布:2024-05-18 14:32:22 浏览:780
右击文件夹总是转圈圈 发布:2024-05-18 14:31:10 浏览:696
新建数据库phpmyadmin 发布:2024-05-18 14:22:38 浏览:736
安卓手机设备连接在哪里 发布:2024-05-18 14:08:28 浏览:820
路由器的密码最多是多少位 发布:2024-05-18 13:58:18 浏览:420