如何使用另一类私有成员对象的类方法

0 java class

我正在创建一个类,它的私有成员之一是另一个类的对象.当我尝试调用已在我的公共实例方法中创建的类的公共实例方法时,我得到一个NullPointerException.

我测试了它,当我从构造函数调用find函数时,它工作正常,但是当我从下一个随机函数调用find函数时,它给了我异常.怎么了?

public class Percolation
{
   private WeightedQuickUnionUF uf;
   private boolean sites[][];

   public Percolation(int N)//constructor
   {
       sites = new boolean[N][N];
       int arraySize = N * N;
       WeightedQuickUnionUF uf = new WeightedQuickUnionUF(arraySize);
       System.out.println("we found the first node at " + uf.find(31));
   }

   public void trialQuickFind()
   {
       System.out.println("we found the first node at " + uf.find(31));
   }
}   
Run Code Online (Sandbox Code Playgroud)

Ell*_*sch 8

在构造函数中你是影子 uf.更改

WeightedQuickUnionUF uf = new WeightedQuickUnionUF(arraySize);
Run Code Online (Sandbox Code Playgroud)

this.uf = new WeightedQuickUnionUF(arraySize);
Run Code Online (Sandbox Code Playgroud)

关于可变阴影的维基百科条目(部分),

在计算机编程中,当在特定范围内声明的变量(决策块,方法或内部类)与在外部范围中声明的变量具有相同的名称时,会发生变量阴影.在标识符(名称而不是变量)的级别上,这称为名称屏蔽.该外部变量被称为由内部变量遮蔽,而内部标识符被称为掩盖外部标识符.