在Java中发布模板类

时间:2013-07-26 02:24:42

标签: java

请原谅我,如果我的“模板”术语不正确,我来自c ++背景。我遇到了默认构造函数的问题。编译器说“标识符预期”,我不理解。有人知道答案吗?

所以你知道,GameObject有一个名为'object'的HashMap已经初始化了。

import java.util.HashMap;
import java.io.Serializable; 
public class GameList<T, V> extends GameObject
{
    protected HashMap<T, V> list;
    public GameList<T, V>()
    {
        list = object;
    }
}

3 个答案:

答案 0 :(得分:2)

你几乎拥有它:

public GameList()
{
    list = object;   
}

您无需在构造函数上重复<T, V>

答案 1 :(得分:2)

您的代码存在两个问题:

  • 您需要删除构造函数声明中的参数列表 - 与C ++不同,这个类型参数列表是隐含的,并且
  • 如果GameObject的{​​{1}}对象没有类型参数,则需要添加类型转换:HashMap

答案 2 :(得分:0)

除了上面提到的以外,还要添加一些有用的最佳实践:

行:

list = object;

可能是一个错误,因为 object 没有作为构造函数参数传递,如果你的超类中有对象,那么声明它在那里受到保护(很可能是一个错误,有两个指向同样的例子)。

如果你想要父类中的对象副本(我怀疑),但无论如何都要调用

list = new HashMap<T, V>(object);

同时避免调用列表列表地图,更糟糕的是:地图列表变量名称没有任何添加对于它的类型的值,程序读者不理解你的变量应该包含什么。

类似地避免列出用户列表

最好的事情是更具可能性,以便立即进行代码理解并避免不必要的评论:说出您声明的列表或地图中的内容,例如。

Map<Long, User> connectedFreindsById;
List<User> friends;

最诚挚的问候, 齐德哈姆迪 - http://1vu.fr