首页 新闻 搜索 专区 学院

怎么得到java类下引用的所有的类?

0
悬赏园豆:100 [待解决问题]
如这个类:
import java.util.*;
import java.lang.String;
public class Info {
Date date = null;
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
public List<String> getTimes(Integer in,String s){
date = new Date();
List<String> as = new ArrayList<String>();
as.add("s");
as.add("1");
return as;
}
}
我怎么得到所引用的类是:
java.util.Date,
java.util.List,
java,util.ArrayList,
java.lang.String,
java.lang.Integer;
我使用的是eclipse ast, 可以得到但是不对,比如:
得到字段申明:
1,Date date = null; //这个我只能得到类型为Date,而且不是java.util.Date,因此我无法知道,这 个Date是java.util.Date,还是java.sql.Date;
java.sql.Date sqlDate = new java.sql.Date(date.getTime()); //这个得到的类型就是直接是:java.sql.Date;
问题:请问这个应该怎么确定?
2,还有返回类型:public List<String> getTimes(Integer in,String s)。这个返回是List<String>,我这怎么确实这个带有泛型的类型?

3,还有关于注解的类型,不过注解我想一定要先引入包吧。

4,如果我在代中用到没有申明的类,应该怎么得到呢?如:
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
或者:
cal.setTimeInMillis(new Long(2134531215L));
这两种直接使用的应该怎么来得到?
.Xm的主页 .Xm | 初学一级 | 园豆:9
提问于:2013-02-18 14:50
< >
分享
所有回答(1)
1

用对象名.getClass(),如 date.getClass()

IT职涯 | 园豆:223 (菜鸟二级) | 2013-02-18 16:29

我解析一个java文件,需要得到里面所有的引用的类,

支持(0) 反对(0) .Xm | 园豆:9 (初学一级) | 2013-02-18 16:55

给你断代码:

    Class<?> info = Class.forName("Info");
            
            //get fields
            Field[] fields = info.getDeclaredFields();
            for(Field f: fields){
                System.out.println(f.getType());//get type
                System.out.println(f.getName());//get name
            }
            
            //get method
            Method[] methods = info.getDeclaredMethods();
            for(Method method:methods){
                System.out.println(method.getReturnType());//get type
                System.out.println(method.getName());//get name
            }

支持(0) 反对(0) IT职涯 | 园豆:223 (菜鸟二级) | 2013-02-19 10:46

这个只得到:field 和 method 的所引用的类。

类上面,方法体上面的注解 所引用的类呢?

方法体里面的局部变量用引用到的类呢?

try catch所引用到的呢?反射好像都得不到。

支持(0) 反对(0) .Xm | 园豆:9 (初学一级) | 2013-02-21 12:06

@.Xm: 

你具体是要做什么呢?是要反编译代码还是什么?

我知道的就是可以通过反射得到对象中的属性和方法,方法内部定义的局部变量我也从没取过,不知道有办法能取不,不知道你的需求是什么,也许可以通过其他方式实现,而不取局部变量呢?

支持(0) 反对(0) IT职涯 | 园豆:223 (菜鸟二级) | 2013-02-21 14:21

@IT随笔: 只是要得到一个java类所引用的所有的类。

已经做的差不多了。用asm实现的

支持(0) 反对(0) .Xm | 园豆:9 (初学一级) | 2013-02-22 10:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册