Topic: 得到java的包名。。请帮我修改。。

  Print this page

1.得到java的包名。。请帮我修改。。 Copy to clipboard
Posted by: develop8
Posted on: 2006-05-24 08:01

//得到包名。
class tt2{
static String[]s;
public tt2(){
Package[] p= Package.getPackages();
s=new String[p.length];
for(int i=0;i<p.length;i++){
s[i]=p[i].getName();
System.out.println(s[i]);}
}
public static void main(String[]args){
new tt2();

}
}

为什么他输出的包名里缺不少包 。。。比如 java.awt , javax.swing 等等。。

用什么方法能让 jsd 里的所有包名都显示出来?

2.Re:得到java的包名。。请帮我修改。。 [Re: develop8] Copy to clipboard
Posted by: damondeng
Posted on: 2006-05-24 10:04

根据API文档, java.lang.Package.getPackages() 只会返回当前classloader所知的package, 并不是所有classpath中的所有package名.

好象没有发现有方法可以知道"所有"package的名字, 不知道楼主想达到什么样的目的, 说出来大家讨论一下.

另外, 你为什么不真接输出Package.getName()? 还要将它的返回结果放到另外一下字符串再输出?

3.Re:得到java的包名。。请帮我修改。。 [Re: develop8] Copy to clipboard
Posted by: develop8
Posted on: 2006-05-29 07:38

我的想法只是 在命令行里输入 简单的类名来找到他的具体的名字,
比如:我输入: Button 就找到 java.awt.Button 。主要是为了了解java类的方便

4.Re:得到java的包名。。请帮我修改。。 [Re: develop8] Copy to clipboard
Posted by: lisliefor
Posted on: 2006-05-29 13:57


package help;

import java.io.*;

public class T2 {
static String[] s;
BufferedReader buff;

public T2() {
buff = new BufferedReader(new InputStreamReader(System.in));
String line = "";

try{
line = buff.readLine();
}catch(IOException e){
System.out.println(e);
}

Package[] p = Package.getPackages();
s = new String[p.length];
for (int i = 0; i < p.length; i++) {
s[i] = p[i].getName();
String c = T2.Compare(s[i],line);
if(!c.equals(""))
System.out.println(c);
}
}

//字符串比较
public static String Compare(String s,String t){
int a = s.length();
int b = t.length();
String temp;
String result = "";

if(a>b){
for(int i=0;i<a-b;i++){
temp = s.substring(i,i+b);
if(temp.equals(t)){
result = s;
break;
}
}
}
else if(a==b){
if(s.equals(t))
result = s;
}
else{
for(int i=0;i<b-a;i++){
temp = t.substring(i,i+a);
if(temp.equals(s)){
result = t;
break;
}
}
}
return result;
}
public static void main(String[] args) {
new T2();
}
}

看这样的效果是不是你想要的。
例如输入:awt
结果:
java.awt.color
sun.awt.im
java.awt.print
java.awt.peer
java.awt.geom
sun.awt.datatransfer
sun.awt.image
sun.awt.dnd

5.Re:得到java的包名。。请帮我修改。。 [Re: develop8] Copy to clipboard
Posted by: develop8
Posted on: 2006-05-30 07:32

你这个输出的是什么啊?我已经做到是输入:Button 能得到 java.awt.Button
输入 Button super 能得到:从java.lang.Object 到java.awt.Button的类,就是超类。你做的比我高明,我没想过这么做。

6.Re:得到java的包名。。请帮我修改。。 [Re: develop8] Copy to clipboard
Posted by: develop8
Posted on: 2006-05-31 08:27

你的程序是怎么实现的,能告诉我怎么做的吗?用什么原理做的啊?
还有象你这样把dos画面,怎么能粘贴到论坛上的?用什么工具?
我不会,能交我吗?
/*写这个程序是因为我昨天保存的,上面论坛的dos画面的
程序 复制--粘贴 之后会发现程序没有换行了,
所以我编这个程序的,但是程序有个不足之处是:
在以下这个地方没能换行,所以引起了,编译不能通过
//字符串比较 public static String Compare(String s,String t){
还有
在for循环的 ;符号后 不应该换行。。
用什么办法能过滤掉for循环块里头的 ;不处理呢?
请帮我修改完善他好吗??即使没有多大的价值,
你可以试试,把程序复制粘贴,保存为文件之后
输入:java separator 目录一 目录二
目录一是你刚才保存的文件的目录,
目录二是你要把文件输出的路径
例子:java separator d:\pretty\xx.txt d:\T2.java
当然你得输入俩个\\符号因为你没有我的这个analyser类,
所以把 import prerogative.analyser;注释掉
或者写:pattern 把\改成\\,我的analyser就是这一个语句的,
其他什么也没有,简单吧?但是如果你重复在命令行里输入
路径,这个类很省事的,至少省了多打\的力气和时间。 */
import java.io.*;
import java.util.regex.*;
import prerogative.analyser;
public class separator{
public static void main(String[]args){
  Pattern p = Pattern.compile("\\;");
  Pattern p2 = Pattern.compile("\\{");
  Pattern p3 = Pattern.compile("\\}");
  try{
FileReader f = new FileReader(analyser.m(args[0]));
BufferedReader bf = new BufferedReader(f);
String s;
String s2="";
String s3;
while((s=bf.readLine())!=null)
s2=s2+s;
s3=p3.matcher(p2.matcher(p.matcher(s2).replaceAll("\\;\n")).replaceAll("\\{\n")).replaceAll("\\}\n");
bf.close();
FileWriter w = new FileWriter(analyser.m(args[1]));
BufferedWriter bw=new BufferedWriter(w);
bw.write(s3);
bw.close();
}catch(FileNotFoundException e){
}catch(IOException e){}
}
}

7.Re:得到java的包名。。请帮我修改。。 [Re: develop8] Copy to clipboard
Posted by: lisliefor
Posted on: 2006-05-31 13:06

我提交的时候是将代码粘贴上去的,至于现在显示的DOS图片,我想,我们应该感谢版主吧!是他帮忙编辑的!
我那段代码很废,就是获取系统输入,然后在搜索的所有包中,获取匹配的结果。没什么用处!涉及到一些流的操作,一个很简单的字符串比较算法。
没有在DOS下编译程序的习惯,而且你 prerogative.analyser,这个包,我也没有,所以.....


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923