我创建了一个Preferences类,对于Getters我不想使用Runtime-Type Token.
所以这是我的getter方法:
public <T> T get(String key, Class<T> clazz) {
// do some crazy stuff (e.g. Double <-> Float)
}
Run Code Online (Sandbox Code Playgroud)
到此为止,一切正常.但我希望class参数是可选的.
boolean b = preferences.get(key);
Run Code Online (Sandbox Code Playgroud)
所以我添加了一个额外的方法:
public <T> T get(String key) {
// return get(key, Class<T>);
}
Run Code Online (Sandbox Code Playgroud)
现在问题:有没有办法做到这一点?有没有办法获得/的实例Class<T>.
可以使用一个小的解决方法:
public <T> T get(String key, T... args) {
return get(key, (Class<T>) args.getClass().getComponentType());
}
public <T> T get(String key, Class<T> clazz) {
System.out.println("key : " + key);
System.out.println("clazz: " + clazz);
}
// using
Boolean b = get("mykey");
Run Code Online (Sandbox Code Playgroud)
通过一个小的解决方法就可以实现。
public <T> T get(String key, T... args) {
return get(key, (Class<T>) args.getClass().getComponentType());
}
public <T> T get(String key, Class<T> clazz) {
System.out.println("key : " + key);
System.out.println("clazz: " + clazz);
}
// using
Boolean b = get("mykey");
Run Code Online (Sandbox Code Playgroud)
杰普,我也不喜欢可变参数,但到目前为止它还有效。
| 归档时间: |
|
| 查看次数: |
1538 次 |
| 最近记录: |