2015-07-19 60 views
-1
public class A 
{ 
    public static void main(String args[]) 
     { 
     } 
} 

class B 
{ 
    private static void call 
     { 
      int x=9; 
      String name ="hello"; 
     } 
} 

誰能告訴我如何訪問B類的私有方法場A類,並打印出來在A級 感謝ü..訪問私有方法字段

+2

將其公開。 – Jite

+0

沒有像「方法領域」這樣的概念。你既可以是一個方法的局部變量,也可以是一個實例或類的字段。 – Seelenvirtuose

回答

0

我們不應該嘗試直接訪問另一個類中的類的private成員。這將完全違反訪問修飾符的規則。而且,如果您真的想訪問,則可以使用提供的Reflection API。

一般情況下,爲了獲得private類變量,你可以以訪問則該類之外創建publicgetter和setter方法

0

按設計你不能。修改該類,以便您要調用的方法對A可見。

也就是說,您可以使用反射來訪問B中的方法,字段等,但不能輕易使用「B.call()」這很可能是你想要做的。

2

可以訪問其他類中的私有字段和方法,但整個問題是你不應該這樣做。他們是私人

所以正確的做法是通過將它們公開給其他類。在字段(而不是方法)的情況下,您可以使用訪問器方法來執行此操作。

但是,如果您確實需要訪問私有字段或方法,您可以通過java.lang.reflect來完成。

// Calling the static `call` method of `B` even though it's private: 
Method m = B.class.getMethod("call"); 
m.setAccessible(true); 
m.invoke(null); 

但是,如果沒有真正的理由,你不應該這樣做。改正設計。