
正文
java代码扩展点 java增加代码
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
JAVA源代码的扩展名为( )
JAVA源代码的扩展名为.java。
Java源程序(.java文件)-java字节码文件(.class文件)-由解释执行器(java.exe)将字节码文件加载到java虚拟机(jvm)-字节码文件(.class)就会在java虚拟机中执行。
Java的基本包
java.lang 其中包含有java代码扩展点:接口:Comparable、Cloneable、Runable等;类:八个基本数据类型封装类、Byte、Short、Integer、Long、Boolean、Character、Float、Double等。
扩展资料
Java为一个面向对象的语言。对程序员来说java代码扩展点,这意味着要注意应中的数据和操纵数据的方法(method),而不是严格地用过程来思考。数据和方法一起描述对象(object)的状态和行为。每一对象是其状态和行为的封装。
类按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。
Java还包括一个类的扩展集合,分别组成各种程序包(Package),用户可以在自己的程序中使用。
例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt为抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。
参考资料来源:百度百科-Java
参考资料来源:百度百科-java基础
相关问答
Q1: 什么是扩展点
用Java语言通俗的讲,扩展点就是接口,扩展就是接口实现,扩展点是由软件本身预留的,对于Spiderman来说,就是在整个爬虫生命周期里的几个流程节点。
Q2: Java项目中如何扩展第三方jar包中的类
下面给你介绍几种方法:
一、继承你想要扩展的类,重写想要扩展的方法
这种做法是比较好的,符合面向对象的思想。另外动作比较小,风险也不会很大。但是这种方法有个前提是,被扩展的类在扩展点能用这个子类去替换。比如说在Bean配置的过程中,可以用在需要这个类的地方用子类注入,而不是注入被扩展的类。就是说原来想要扩展的类都是直接new出来的,那么我们新写的子类根本就没法在需要扩展的地方使用。
二、直接复制一份想要扩展的类,在项目中创建同包同名的类
这种方法是我在网上看到的,这里利用了类加载的优先性,说的是WEB-INF目录下的类加载的优先级要比lib中jar包类的优先级要高。
三、使用ASM等字节码修改工具,直接修改这个类的字节码
这个是终极做法了,直接把这个类的字节码修改成你想要扩展的样子。思路相当直接,缺点就是你要对字节码非常熟悉,并且熟悉ASM这个工具。其次这种做法的风险比较大,如果你提出了这种想法,很有可能被pass掉。
Q3: 扩展点设计
02_扩展点设计
供应链的业务中,一个业务流程涉及到多个节点,并且每个节点的实现逻辑不同,如下图所示
每一个节点都可能存在不同的实现,有时候需要从多个实现中选择一个(互斥),有时候需要选择多个(组合)。如果不对各种实现进行良好的管理,带来的问题是java代码扩展点:
针对于上一节中提到的节点多种实现的问题,Java的SPI可以解决我们的问题。
Java SPI使用约定:
1、当服务提供者提供java代码扩展点了接口的一种具体实现后,在jar包的META-INF/services目录下创建一个以“接口全限定名”为命名的文件,内容为实现类的全限定名;
2、接口实现类所在的jar包放在主程序的classpath中;
3、主程序通过java.util.ServiceLoder动态装载实现模块,它通过扫描META-INF/services目录下的配置文件找到实现类的全限定名,把类加载到JVM;
4、SPI的实现类必须携带一个不带参数的构造方法;
扩展点(ExtensionPoint)必须通过接口申明,扩展实现(Extension)是通过Annotation的方式标注的,Extension里面使用BizCode和TenantId两个属性用来标识身份,
框架的Bootstrap类会在Spring启动的时候做类扫描,进行Extension注册,在Runtime的时候,通过TenantContext来选择要使用的Extension。TenantContext是通过Interceptor在调用业务逻辑之前进行初始化的。整个过程如下图所示:
扩展点实现路由
比如在一个CRM系统里,客户要添加联系人Contact是一个,但是在添加联系人之前,我们要判断这个Contact是不是已经存在了,如果存在那么就不能添加了。不过在一个支持多业务的系统里面,可能每个业务的冲突检查都不一样,这是一个典型的可以扩展的场景。
那么在SOFA框架中,我们可以这样去做。
2、实现业务的扩展实现
3、在领域实体中调用扩展实现
cola扩展点的缺陷:
扩展点必须以ExtPt结尾,通过ExtPt明显标识这是一个扩展点,扩展点实现类以Ext结尾
用在扩展点实现类上,使用该注解,会将实现类注入到spring容器中
1、基于Strategy Pattern的扩展,没有找到一个很好的固化到框架中的方法
2、使用Strategy Pattern,没有规范的限制,编码相对随意
关于java代码扩展点和java增加代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。





