Malabar-Mode: JDEE集成,替代Java源码重写工具

需积分: 25 1 下载量 106 浏览量 更新于2025-01-02 收藏 98KB ZIP 举报
资源摘要信息: "Java重写源码方法-malabar-mode:用于Java和其他基于JVM的语言的EMCSJVM集成" Java是一种广泛使用的面向对象的编程语言,它通过类和对象的概念实现程序的模块化。Java的源码是由一系列方法组成的,这些方法可以被子类重新实现或覆盖(重写),以便提供特定行为的定制版本。而重写源码方法是Java多态性的一个重要方面,允许开发者扩展或修改类的行为,而不必更改原始类。 本资源信息介绍了malabar-mode,这是一个专为Java以及其它基于Java虚拟机(JVM)的语言设计的EMACS编辑器集成模式。malabar-mode项目集成提供了与Java开发环境的紧密连接,特别是在使用EMACS编辑器进行开发时。EMACS是一个功能强大的文本编辑器,它支持高度定制化,被许多开发者用作代码编辑的首选工具。 malabar-mode通过与Maven的集成,可以轻松地动态编译Java和Groovy源文件,并执行Maven构建命令。Maven是一个项目管理和自动化构建工具,它依赖于一个明确的项目对象模型(POM),并且定义了一组标准的构建过程。通过malabar-mode,Java开发者可以更高效地管理项目依赖、构建项目、运行单元测试以及生成文档等。 提及的malabar模式提供了许多集成开发环境(IDE)功能,如语法高亮、移动命令等。这代表了在EMACS中,Java和Groovy的开发体验将更加丰富和高效。 标题中的"malabar-mode"指的是这个特定的EMACS模式,它允许开发者在Java和其他基于JVM的语言开发中使用EMACS编辑器,并且享有IDE级别的便利功能。"EMACS"是一个可高度定制化的文本编辑器,它为程序员提供了很多功能,包括但不限于宏编程、代码自动完成、脚本支持等。"JVM"即Java虚拟机,它是运行Java程序的平台。 描述中提到的"马拉巴模式正在与JDEE集成",JDEE指的是Java Development Environment for Emacs,它也是一个为Java开发提供支持的EMACS扩展。描述信息表明,随着时间的推移,malabar-mode上的一些功能将不再进行维护和更新,而是建议开发者转向使用JDEE,因为JDEE将包括malabar-mode的所有有用功能。此外,描述中还提到,malabar-mode的开发重新启动,目的是保持其持续更新和发展。 "JDEE"是一个专门为EMACS开发的Java IDE工具集,它提供了一整套Java开发的工具,包括自动补全、项目管理、调试工具等。由于JDEE和malabar-mode都旨在提高Java开发效率,且两者都与EMACS集成,因此它们的功能可能有重叠。malabar-mode的开发团队似乎决定将资源和努力转移到JDEE中,以改进和加强这个已经较为成熟的IDE工具集。 最后,malabar-mode的开发起源于monir-mode,而monir-mode是一个基于EMACS的模式,它提供了一些基础的文本编辑功能,但没有像malabar-mode那样的JVM语言开发集成特性。 总体而言,本资源信息揭示了一个专门为了在EMACS编辑器上进行Java及其他JVM语言开发而设计的工具集,并且通过与Maven的集成以及对JDEE的整合,它提供了丰富的开发支持功能。它还详细说明了malabar-mode与JDEE之间的关系,以及未来项目开发的走向。对于Java开发者来说,这些信息对于优化他们的开发环境和流程具有重要价值。
443 浏览量
// 对overload测试的文件:OverloadTest.java public class OverloadTest { // 下面几个方法用来验证可以通过定义不同的参数类型和参数的数目进行方法重载。 public void fun(){ System.out.println("method fun in OverloadTest, no parameter"); } public void fun(float f) { System.out.println("method fun in OverloadTest, parameter type: float"); } public void fun(int i){ System.out.println("method fun in OverloadTest, parameter type: int"); } public void fun(int i1, int i2) { System.out.println("method fun in OverloadTest, parameter type: int, int"); } // 下面的两个方法用来验证可以通过定义不同的参数顺序进行方法重载。 // 需要注意:这里的参数肯定不是相同的类型,否则的顺序的先后就毫无意义。 public void fun1(int i, float f) { System.out.println("method fun1 in OverloadTest, sequence of parameters is: int, float"); } public void fun1(float f, int i) { System.out.println("method fun1 in OverloadTest, sequence of parameters is: float, int"); } // 下面的两个方法用来验证方法抛出的异常对于重载的影响. // 无论是异常的类型还是异常的个数都不会对重载造成任何的影响。 public void fun2() throws TestException { System.out.println("fun2 in OverloadTest, exception: TestException"); } public void fun2(int i) throws TestException, TestException1 { System.out.println("fun2 in OverloadTest, exception: TestException, TestException1"); } public void fun2(float f) throws Exception { System.out.println("fun2 in OverloadTest, exception: Exception"); } // 不能通过抛出的异常类型来重载fun方法。 //public void fun(int i) throws Exception { // System.out.println("method fun in OverloadTest, parameter type: int, exception: Exception"); //} // ? 不能通过返回值重载fun方法。 //public boolean fun(int i) throws Exception { // System.out.println("method fun in OverloadTest, parameter type: int, exception: Exception, return: boolean"); // return true; //} private void fun3() { } // 不能通过不同的访问权限进行重载 public void fun3() { } public static void main(String[] args) { // 这里只是定义了OverloadTest的实例,所以test不会调用 // OverloadTest1中的方法。 OverloadTest test = new OverloadTest1(); // 这里定义了OverloadTest1的实例,因为OverloadTest1是OverloadTest // 的子类,所以test1会调用OverloadTest中的方法。 OverloadTest1 test1 = new OverloadTest1(); try { int i = 1, j = 2, m = 3; // 这里不会调用OverloadTest1的fun方法 // test.fun(i, m, j); test1.fun(i, j, m); test1.fun(); // 这个调用不会执行,因为fun3()在OverloadTest中访问权限是priavte //test1.fun3(); test1.fun3(i); } catch(Exception e) { } } } class OverloadTest1 extends OverloadTest{ // 在子类中重载fun public void fun(int i, int m, int n) { System.out.println("Overload fun1 in OverloadTest1, parameter type: int, int, int"); } // 这个不是对父类中方法的重载,只是一个新的方法。 public void fun3(int i) { System.out.println("fun2 in OverloadTest1"); } } // 对override测试的文件:OverrideTest.java public class OverrideTest { public void fun() throws TestException { System.out.println("method fun in OverrideTest"); } private void fun1() { System.out.println("method fun1 in OverrideTest"); } public static void main(String[] args) { OverrideTest test = new OverrideTest1(); try { test.fun(); test.fun1(); } catch(Exception e) { } } } class OverrideTest1 extends OverrideTest{ // 以下正常Override public void fun() throws TestException2 { System.out.println("fun in OverrideTest1"); } // 不能Override父类中的方法,因为它定义了不同的异常类型和 // 返回值。 //public int fun() throws TestException1 { // System.out.println("method fun in Test"); // return 1; //} // 不能Override父类中的方法,因为它抛出了比父类中非法范围 // 更大的异常。 //public void fun() throws Exception { // System.out.println("fun in OverrideTest1"); //} // 这个方法并没有Override父类中的fun1方法,因为这个方法在 // 父类是private类型,所以这里只是相当于定义了一个新方法。 public void fun1() { System.out.println("method fun1 in Test"); } } class TestException extends Exception{ public TestException(String msg) { super(msg); } } class TestException1 extends TestException { public TestException1(String msg) { super(msg); } } class TestException2 extends TestException { public TestException2(String msg) { super(msg); } }