Dru*_*nya 5 java java-8 functional-interface
代码:
public void ifChangedString(String key, Consumer<String> consumer) {
...
consumer.accept(getString(key));
}
public void ifChangedBoolean(String key, Consumer<Boolean> consumer) {
...
consumer.accept(getBoolean(key));
}
Run Code Online (Sandbox Code Playgroud)
是否可以制作单个方法public <T> void ifChanged(String key, Class<T> clazz, Consumer<T> consumer)?
显而易见的解决方案是public void ifChanged(String key, Consumer<Object> consumer)但我不想Object用作参数类型,最好使用上述几种方法。
问题是对于accept我需要的方法? super XXX,只有 super 是 Object。那么有可能吗?
您可以创建接受类型Tobject 和Consumerof 类型的通用方法T
public <T> void ifChanged(T t, Consumer<T> consumer) {
consumer.accept(t);
}
Run Code Online (Sandbox Code Playgroud)
您可以通过传递具有相应Consumer操作的任何对象来调用该方法
ifChanged("String", s->System.out.println(s.length()));
ifChanged(10, i->System.out.println(i.toString()));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
303 次 |
| 最近记录: |