如果想在第三方包的方法传入一个参数,并且这个这个参数是一个自定义的对象类型,
自己试的时候发现引用包中的项目需义有个对象的定义,第三方包也要有同样包路径的
对象文件定义才可以,但是这样太死了,请问大家我可以怎么做呢
用泛型
例如在你的jar源码中: public class Mclass{
public T data;
public Mclass(){
}
public set Data(T value){
this.data=value;
}
}
调用
MyObject obj=new MyObject();
Mclass c=new Mclass();
c.setData(obj);
其中MyObject是你自定义的对象
jar包源码:
public class GenericTest {
//T 传入的自定义对象
public T data;
//获取对象
public T getData(){
return data;
}
//设置对象
public void setData(T value){
data=value;
}
}
测试代码:
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person2 p=new Person2("Mike", 30);
GenericTest<Person2> g=new GenericTest<Person2>();
g.setData(p);//设置对象
Person2 per=g.getData(); //获得对象
System.out.print(" name : "+ per.getName()+ " age :"+per.getAge()); //输出属性
}
}
输出
name : Mike age :30
可见传进去的对象的属性可以获取到
Person2.java的代码
public class Person2 {
private String name;
private int age;
public Person2(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
我的jar源文件代码
public class Mclass<T> {
public T data;
public void setData(T value){
this.data=value;
}
public String getName(){
People p = (People) data;
return p.getName();
}
}
```测试
public static void main(String args[]) {
People obj=new People();
obj.setName("testjar");
Mclass<People> c=new Mclass<People>();
c.setData(obj);
c.getName();
}
我的问题是,测试时在主函数中传递实体到jar源文件中,想在jar文件中该获取实体属性进行处理,虽然可以通过范型方法传递任意实体,
但在jar源文件中想要获取实体属性,还是要转换成对应对象,所以jar文件也要建立实体