Java 类型转换
我有Java 类型转换,java,types,Java,Types,我有 (课堂上没有给出键入T。您在“类似于此的内容”下的建议将正确运行。只要使用它。有两种可能的解决方案: 在方法上定义泛型类型: public class MyClass{ private HashMap<Key<?>, Val<?>> myMap; public Val<T> getValue(Key<T> key) { return (Val<T>) myMap.get(key)
(课堂上没有给出键入
T
。您在“类似于此的内容”下的建议将正确运行。只要使用它。有两种可能的解决方案:
public class MyClass{
private HashMap<Key<?>, Val<?>> myMap;
public Val<T> getValue(Key<T> key) {
return (Val<T>) myMap.get(key)
}
公共类MyClass{
私有HashMap>myMap;
public Val getValue(Key){
return(Val)myMap.get(key)
}
public class MyClass{
private HashMap<Key<?>, Val<?>> myMap;
public <T> Val<T> getValue(Key<T> key){
return (Val<T>) myMap.get(key)
}
公共类MyClass{
私有HashMap>myMap;
public Val getValue(Key){
return(Val)myMap.get(key);
}
}
它不起作用,因为T只能在类中定义。在这里,T必须在每次执行函数时定义,而不是在编译期间。您尝试过吗?考虑到泛型的规则,我想会的。我尝试过。T类有问题。找不到符号T。我确切地知道您需要做什么!您在哪里声明您的类,而不是只需输入类的名称,如
public class
putpublic class extensed HashTable
。一些键入错误,但您可以找到答案。哦,非常抱歉,我在代码中犯了一个错误。应该是myMap.get而不是“this.get”。(实际上,仔细想想——选项2甚至没有真正的意义。如果类中可以指定
,那么myMap
将声明为HashMap
。但是OP指出这是不可能的,因为t
对于myMap
的不同元素是不同的)@下层选民和亲密选民:请解释。我觉得这个问题很好。没有什么不清楚的,因为有一个公认的答案可以证明
public class MyClass{
private HashMap<Key<?>, Val<?>> myMap;
public <T> Val<T> getValue(Key<T> key){
return (Val<T>) myMap.get(key)
}
public class MyClass<T> {
private HashMap<Key<?>, Val<?>> myMap;
public Val<T> getValue(Key<T> key) {
return (Val<T>) myMap.get(key);
}
}