Java中的问题模板类 原谅我,我的模板的术语不正确,我来自C++背景。我对默认构造函数有问题。编译器说需要标识符,我不明白。有人知道答案吗

Java中的问题模板类 原谅我,我的模板的术语不正确,我来自C++背景。我对默认构造函数有问题。编译器说需要标识符,我不明白。有人知道答案吗,java,Java,所以你知道,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

所以你知道,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;
    }
}
你差点就成功了:

public GameList()
{
    list = object;   
}
你不需要在构造函数上重复这个过程

你差点就成功了:

public GameList()
{
    list = object;   
}

你不需要在构造函数上重复这个过程

您的代码有两个问题:

您需要删除构造函数声明中的参数列表——与C++不同,该类型参数列表是隐含的, 如果GameObject的HashMap对象没有类型参数,则需要添加类型转换:list=HashMapobject;
您的代码有两个问题:

您需要删除构造函数声明中的参数列表——与C++不同,该类型参数列表是隐含的, 如果GameObject的HashMap对象没有类型参数,则需要添加类型转换:list=HashMapobject;
除了上面提到的最佳实践之外,还需要添加一些有用的最佳实践:

该行:

list = object;
这可能是一个错误,因为对象没有作为构造函数参数传递,如果您的超类中有对象,那么在那里声明它受保护。最有可能的错误是有两个指向同一实例的指针

如果您想要父类中对象的副本,我对此表示怀疑,但无论如何调用

list = new HashMap<T, V>(object);
还要避免调用列表、映射,甚至更糟糕的是:映射列表变量名在其类型上没有任何附加值,程序读取器不理解变量应该包含什么

类似地,避免列出用户列表:

最好的办法是尽可能地具体,以便立即理解代码并避免不必要的注释:说出您声明的列表或映射中的内容

Map<Long, User> connectedFreindsById;
List<User> friends;
致以最良好的祝愿,
Zied Hamdi-

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

该行:

list = object;
这可能是一个错误,因为对象没有作为构造函数参数传递,如果您的超类中有对象,那么在那里声明它受保护。最有可能的错误是有两个指向同一实例的指针

如果您想要父类中对象的副本,我对此表示怀疑,但无论如何调用

list = new HashMap<T, V>(object);
还要避免调用列表、映射,甚至更糟糕的是:映射列表变量名在其类型上没有任何附加值,程序读取器不理解变量应该包含什么

类似地,避免列出用户列表:

最好的办法是尽可能地具体,以便立即理解代码并避免不必要的注释:说出您声明的列表或映射中的内容

Map<Long, User> connectedFreindsById;
List<User> friends;
致以最良好的祝愿,
Zied Hamdi-

注意在java中它是泛型,而不是模板在java中它是泛型,而不是模板java没有指针,引用同一实例的两个变量肯定不是错误。只需尝试对象x=新对象;对象y=x;。每台计算机都有内存指针。您应该了解程序中墙后发生的事情,以便能够预测其行为。Java有指针,你只是看不到:y和x指向相同的内存地址,它们只是对内存位置的引用。这就是为什么当您更改x状态时,只要不通过执行x=zJava将另一个指针指定给y或x,您就可以看到y中的更改,并且引用同一实例的两个变量肯定不是错误。只需尝试对象x=新对象;对象y=x;。每台计算机都有内存指针。您应该了解程序中墙后发生的事情,以便能够预测其行为。Java有指针,你只是看不到:y和x指向相同的内存地址,它们只是对内存位置的引用。这就是为什么在更改x状态时,只要不通过执行x=z将另一个指针指定给y或x,就可以看到y中的更改