Java 努力理解对象声明代码

Java 努力理解对象声明代码,java,object,declaration,Java,Object,Declaration,我正在使用散列映射,并且我已经从类型SLLNode声明了一个存储桶数组,该数组包含MapEntry对象: private SLLNode<MapEntry<K, E>>[] buckets; private SLLNode[]bucket; 现在,我不理解构造函数中的代码: buckets = (SLLNode<MapEntry<K, E>>[]) new SLLNode[m]; //where m is int, and it is

我正在使用散列映射,并且我已经从类型
SLLNode
声明了一个存储桶数组,该数组包含
MapEntry
对象:

private SLLNode<MapEntry<K, E>>[] buckets;
private SLLNode[]bucket;
现在,我不理解构造函数中的代码:

buckets = (SLLNode<MapEntry<K, E>>[]) new SLLNode[m]; //where m is int, and it is
                                                      // the size of the array.
bucket=(SLLNode[])新的SLLNode[m]//其中m是int,它是
//数组的大小。
我也不能理解这一点:

public SLLNode<MapEntry<K,E>> search(K targetKey) {

  int b = hash(targetKey);

  for (SLLNode<MapEntry<K,E>> curr = buckets[b]; curr != null; curr =
      curr.succ) {
    if (targetKey.equals(((MapEntry<K, E>) curr.element).key))
      return curr;   

    if (targetKey.equals(((MapEntry<K, E>) curr.element).key))
      return curr;
  }

  return null;
公共SLLNode搜索(K targetKey){
int b=散列(targetKey);
对于(SLLNode curr=bucket[b];curr!=null;curr=
货币成功){
if(targetKey.equals(((MapEntry)curr.element.key))
返回货币;
if(targetKey.equals(((MapEntry)curr.element.key))
返回货币;
}
返回null;
确切地说,我无法理解
(K targetKey)
如何被转换为
(MapEntry)
,并在equals方法中使用它的逻辑

我无法理解(K targetKey)如何转换为(MapEntry)的逻辑

不是的。
targetKey
equals
方法的参数是

((MapEntry<K, E>) curr.element).key
((映射条目)当前元素).key
这将获取
curr.element
,将其强制转换为
MapEntry
,并提取
key
字段。因此,
K
对象的
equals
方法正在另一个
K
对象上调用。

bucket=(SLLNode[])新的SLLNode[m]
-这其中哪一部分让您感到困惑?您能指出您不理解的特定语法,或者您可能认为这不起作用的特定原因吗?我不明白为什么(SLLNode[])会在新的SLLNode[m]之前使用。我一直在使用它,但我不知道它到底是什么。通常我声明的对象是:object O=new object(“某物”)