java如何使用泛型指定不确定参数

wangsufu77 2019-07-06 01:00:36
service接口如下
public interface Service {
void test1(int age);
}
实现类如下:
package locktest3;




public class ServiceImpl implements Service {


@Override
public void test1(int age) {
SimpleCallBack simpleCallBack=new SimpleCallBack<Integer>();
simpleCallBack.execute(new Templete<Integer>() {
@Override
public void init(Integer o) {
System.out.println("init3");
}

@Override
public void process(Integer o) {
System.out.println("process3");
}

@Override
public void after(Integer o) {
System.out.println("after3");
}
}, age);
}

}

模板类:
package locktest3;

public interface Templete<E> {
void init(E e);
void process(E e);
void after(E e);

}

回调类
package locktest3;


public class SimpleCallBack<E> {
void execute(Templete t,E e){
t.init( e);
t.process(e);
t.after(e);

};
}

测试类
package locktest3;


public class AppTest {
public static void main(String[] args) {
Service service=new ServiceImpl();
service.test1(27);

}
}
主要目的,为了在调用serviceImpl时候在init方法和after方法中实现一些额外处理。
现在问题是,service中的test方法入参是不确定的,如果test中有多个参数我的模板就不适用了,如何让他适应任意参数呢?谢谢
...全文
445 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangsufu77 2019-07-06
  • 打赏
  • 举报
回复
引用 1 楼 cwmlow 的回复:
可以把入参写成dto对象(类似于实体类),对象作为入参
我不想动原来的结构,就是说原来test这个接口,已经在用了。不好改入参
cwmlow 2019-07-06
  • 打赏
  • 举报
回复
可以把入参写成dto对象(类似于实体类),对象作为入参
媚衣 2019-07-06
  • 打赏
  • 举报
回复
可以首先定义一个抽象类AbstractService类,实现接口Service,然后在AbstractService类中定义想要的抽象方法,后续其他的ServiceImpl类继承AbstractService类,这样就不会影响原来的test接口的应用了。 AbstractService类定义如下: public abstract class AbstractService<T> implements Service{ //用三点表示可变参数,泛型T表示任意一种类型 public abstract void test1(T... age) ; @Override public void test1(int age) { // TODO 自动生成的方法存根 } }

62,614

社区成员

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

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