Java中的问题模板类 原谅我,我的模板的术语不正确,我来自C++背景。我对默认构造函数有问题。编译器说需要标识符,我不明白。有人知道答案吗
所以你知道,GameObject有一个名为“object”的HashMap,它已经初始化了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
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中的更改