我正在开发一个功能类似于 JTable 的 setDefaultRenderer
的类方法。我想要 Class
-特定的格式化程序,将对象转换为适合显示的字符串。
public interface Formatter<T> {
String format(T value);
}
private Map<Class<?>, Formatter<?>> formatters;
public <T> void addFormatter(Formatter<T> formatter) {
formatters.put(T.class, formatter);
}
这是我现在的代码,但 Java 不接受 T.class
.
error: cannot select from a type variable
formatters.put(T.class, formatter);
^
1 error
有没有办法在不传递单独的 Class<T>
的情况下写这个?范围?我正在努力避免这种情况。这似乎是多余的。
最佳答案
不,这是不可能的,因为通用 type erasure在 java 。关于泛型类的所有信息在运行时都会丢失,唯一的解决方案是显式地将类作为参数传递。
关于java - 在不传递 Class<T> 参数的情况下找出 T.class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17841688/