Pony
2007-04-29 06:05:41 UTC
最近在測試 Java 的 Access Modifier
(public, protected, private, none)
在編譯的時候發生了一件詭異的事情
先附上程式碼:
==[1;33;41mArray.java[m==
package simple;
class Array {
public Array() {
System.out.println( "simple.Array");
}
}
==[1;33;41mList.java[m==
package simple;
public class List {
Array a = new Array();
public Array b = new Array();
public List(){
System.out.println( "com.bruceeckel.util.List");
}
}
==[1;33;41mTestLib.java[m==
import simple.*;
public class TestLib {
public static void main(String[] args) {
[1;30m// Array is not public accessible.[m
[1;30m// Array a = new Array();[m
List l = new List();
[1;30m// cannot access a since it’s in package scope[m
[1;30m// System.out.println(l.a);[m
System.out.println(l.b);
}
}
假設目前的路徑是 d:\java\id9455\simple
Array.java 和 List.java 放在 d:\java\id9455\simple
TestLib.java 放在 d:\java\id9455
問題來了
在編譯的時候
如果在 d:\java\id9455\simple 下 [1;33mjavac *.java[m
可以正常編譯
但如果是:[1;33m先編譯 Array.java,再編譯 List.java[m
卻會發生[1;36m找不到 Array 這個 Class 的問題[m
根據我對 none 這個 access modifier 的認識
他應該要能夠讓[1;33m在同一個 Package 裡其他的Class 存取[m
但錯誤訊息卻找不到這個Class
請問一下這是為什麼呢 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.64.169.97
(public, protected, private, none)
在編譯的時候發生了一件詭異的事情
先附上程式碼:
==[1;33;41mArray.java[m==
package simple;
class Array {
public Array() {
System.out.println( "simple.Array");
}
}
==[1;33;41mList.java[m==
package simple;
public class List {
Array a = new Array();
public Array b = new Array();
public List(){
System.out.println( "com.bruceeckel.util.List");
}
}
==[1;33;41mTestLib.java[m==
import simple.*;
public class TestLib {
public static void main(String[] args) {
[1;30m// Array is not public accessible.[m
[1;30m// Array a = new Array();[m
List l = new List();
[1;30m// cannot access a since it’s in package scope[m
[1;30m// System.out.println(l.a);[m
System.out.println(l.b);
}
}
假設目前的路徑是 d:\java\id9455\simple
Array.java 和 List.java 放在 d:\java\id9455\simple
TestLib.java 放在 d:\java\id9455
問題來了
在編譯的時候
如果在 d:\java\id9455\simple 下 [1;33mjavac *.java[m
可以正常編譯
但如果是:[1;33m先編譯 Array.java,再編譯 List.java[m
卻會發生[1;36m找不到 Array 這個 Class 的問題[m
根據我對 none 這個 access modifier 的認識
他應該要能夠讓[1;33m在同一個 Package 裡其他的Class 存取[m
但錯誤訊息卻找不到這個Class
請問一下這是為什麼呢 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.64.169.97