java 反射问题..................

cooc123 发布于 2013/07/31 16:53
阅读 637
收藏 0
    try {
        Class c = Class.forName( handlerClass );
        Constructor con = c.getDeclaredConstructor( new Class[]{ Integer.class, Integer.class, String.class, String.class, CountDownLatch.class, Http.class } );
        Runnable handler = ( Runnable ) con.newInstance( new Object[]{ i, n, name, taskList.get( i ), threadSignal, http } );
        service.execute( handler );
    } catch ( Exception e ) {
        e.printStackTrace();
    }

public class TusiImage implements Runnable {


    private int i;
    private int n;
    private String name;
    private String url;
    private CountDownLatch threadSignal;
    private Common common = new Common();
    private Http http;
    private Logger logger = Logger.getLogger( TusiImage.class );


    public TusiImage( int i, int n, String name, String url, CountDownLatch threadSignal, Http http ) {
        this.i = i;
        this.n = n;
        this.name = name;
        this.url = url;
        this.threadSignal = threadSignal;
        this.http = http;
    }

异常 

java.lang.NoSuchMethodException: org.tusi.main.TusiImage.(java.lang.Integer, java.lang.Integer, java.lang.String, java.lang.String, java.util.concurrent.CountDownLatch, org.tusi.lib.Http)

加载中
0
红薯
红薯
可能性很多哦,参数类型不匹配,构造函数是私有的
0
震秦
震秦

你这个类org.tusi.main.TusiImage 没有这样(java.lang.Integer, java.lang.Integer, java.lang.String, java.lang.String, java.util.concurrent.CountDownLatch, org.tusi.lib.Http)的构造方法. 

检查TusiImage的构造方法. 

目测你上面的代码, 必须TusiImage实现Runnable接口才行. 否则你的代码仍然出错

cooc123
cooc123
代码已贴出 构造是一样的
0
震秦
震秦

引用来自“震秦”的答案

你这个类org.tusi.main.TusiImage 没有这样(java.lang.Integer, java.lang.Integer, java.lang.String, java.lang.String, java.util.concurrent.CountDownLatch, org.tusi.lib.Http)的构造方法. 

检查TusiImage的构造方法. 

目测你上面的代码, 必须TusiImage实现Runnable接口才行. 否则你的代码仍然出错

Integer和int 是不一样的. 你应该用int.class
cooc123
cooc123
确实,换成 int.class 就O了
0
于忠达
于忠达
java.lang.Integer.class与int.class是不一样的类型,注意一下即可
0
李志华
李志华
int能.class的吗?
0
lxhuang0903
lxhuang0903

int的class对象 可以用int.class或者Integer.TYPE获取,

而Integer得class对象,要用Integer.class

两者是不同的class对象

返回顶部
顶部