从另一个类访问私有变量

时间:2013-12-19 02:22:05

标签: java variables reflection private

注意:我看过其他帖子,但我还是很丢失。

这是我在一个类中拥有的私有变量的代码:

private int readFile( String fileName)  
{
 try
 {
            File f = new File( fileName );
            Scanner input = new Scanner( f );
            while( input.hasNextLine( ) )
            {
                    String s = input.nextLine( );
                    String[ ] sArr = s.split( " " );
                    String animal = sArr[ 0 ];
                    double cost = Double.parseDouble(sArr [ 1 ] );
                    boolean penNeeded = Boolean.parseBoolean( sArr[ 2 ] );
                    boolean available = Boolean.parseBoolean( sArr[ 3 ] );
                    Pet p = new Pet( animal, cost, penNeeded, available );
                    if (count < animalList.length )
                    {
                       animalList[count] = p;
                       count++;
                    }
            }
            input.close( );
        }
        catch( Exception e )
        {
          System.out.println("Error reading the file:");
          System.out.println( e );
          e.printStackTrace(  );
        }

        return count;
  }

我需要在位于另一个类中的这段代码中访问它:

 static public void processTransaction( String fileName, PettingZoo pz )
 {
    try
    {
       // variable should be accessed here                  
    }
    catch( Exception e )
    {
        System.out.println("Error reading the file:");
        System.out.println( e );
        e.printStackTrace(  );
    }
}

我该怎么做?我认为我需要使用某种修饰符,但我不知道如何实现它或如何实现它。

3 个答案:

答案 0 :(得分:2)

如果要访问私有变量,可以使用getter和setter方法。

示例:

private int variable = 5; //<--- your private variable of class A

// a public method (into the same class A)
// that allows the sharing of your private variable
public int getVariable() {
    return variable;
}

现在你可以从另一个类(B)调用方法getVariable()并获取私有变量(类A)的值。

答案 1 :(得分:2)

您无法直接从其他类访问私有变量。这就是宣称私有化的重点。您需要做的是使用课程setter中的getterA方法,然后从课程get调用B方法。

答案 2 :(得分:0)

根据your comment,您可以通过更改方法的修改来访问private int readFile(String fileName)方法。将方法的修饰符更改为publicprotected。此外,由于访问方法为static,因此您需要将方法更改为static

因此将其更改为

public static int readFile( String fileName)  
{

}

processTransaction方法中调用它,

ClassName.readFile("file_name.extn");