如何重写JRE中已经存在的类?

yufanzx 2008-10-13 05:34:59
我们知道JRE中已经有很多很多类,如果我们对其中某些类的实现不满意,不能满足自己的某个工程的需求,打算自己重写一个。

比如说,我有一个很简单的eclipse的java工程,jre1.6.0是工程依赖的库,有一个带main的MainClass,引用了java.util.Vector,而我们这个工程又自己写了java.util.Vector这个类,如何保证MainClass里用到的是我们自己写的,而不是jre里的那个Vector?
...全文
121 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yufanzx 2008-10-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bao110908 的回复:]
或者用其他的包名测试后完成后,再改回 java 包名,这样再用这个类来编译(运行)其他类的时候

使用:

BatchFile code
javac -J-Xbootclasspath/p:yourjar.jar Test.java
java -Xbootclasspath/p:yourjar.jar Test



yourjar.jar 是你自己编译的类。

我没这么做过,你试试看吧。
[/Quote]

this works, and i had worked out how to make this happen in eclipse. thanks.
qiandongbo 2008-10-13
  • 打赏
  • 举报
回复
请原谅我的胡言乱语,看错了~
qiandongbo 2008-10-13
  • 打赏
  • 举报
回复
哦,在THKINKING上看过这个问题.
比如现在我在自己的包中(classPath路径下)创建了一个类Arrays.java

package Test;

public class Arrays {
public static void f()
{
System.out.println("f()");
}
}


然后又新建了一个类

package Test;
import java.util.*;
public class Test1
{
public static void main(String[] args)
{
int[] i={1,2,3};
//Arrays.toString(i); error
String s=java.util.Arrays.toString(i);
System.out.println(s);
Arrays.f();
}
}

可以看到自己创建的类有优先权,而要用到util包用的Arrays类则需要定义全名。
至少在MyEcplise环境下是这样。
pauliuyou 2008-10-13
  • 打赏
  • 举报
回复
java_home/jre/lib/rt.jar
yufanzx 2008-10-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chouy 的回复:]
能不能把rt.jar中的文件替换掉?
[/Quote]

不能,因为重写内容引用了大量工程内部的类。
yufanzx 2008-10-13
  • 打赏
  • 举报
回复
……………………………………

好吧,我不知道你们用的什么编辑器,至少eclipse不排斥java.lang这样的包名。

不过ok,org总成了吧?不能你梦编辑器连org开头的包名都不允许吧?JRE里照样含有很多org的类,有没有可能重写。
  • 打赏
  • 举报
回复
或者用其他的包名测试后完成后,再改回 java 包名,这样再用这个类来编译(运行)其他类的时候

使用:

[code=BatchFile]javac -J-Xbootclasspath/p:yourjar.jar Test.java
java -Xbootclasspath/p:yourjar.jar Test[/code]

yourjar.jar 是你自己编译的类。

我没这么做过,你试试看吧。
商科程序员 2008-10-13
  • 打赏
  • 举报
回复
能不能把rt.jar中的文件替换掉?
liky5387 2008-10-13
  • 打赏
  • 举报
回复
首先,你的工程里不可能存在一个java.util这样的一个包,也写不了java.util.Vector这样的类.要写一个别的类,只能改变一个包名,这个时候你可以过导入的包名来区分你用的是自己写的Vector还是jre1.6.0里的Vector.比如说你自己写的是java.com.util.Vector类,用的时候,import java.com.util.Vector;这样就是确定你用的是你自己写的Vector.
  • 打赏
  • 举报
回复
包名不能以 java 开头的!
justinavril 2008-10-13
  • 打赏
  • 举报
回复
单独封装一个Package吧...

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧