JMS, JDBC 提供的都是interface,具体的实现得要用provider。例如ojdbc6.jar就是对JDBC Interface的实现,还有application server里有专门对JMS的实现。Interface和Class区分开来的好处就在于,用interface的人只管用就行了,不用管怎么实现的。如JMS,JDBC的实现涉及大量的网络层之类的底层操作,也是我们操心不来的。
Interface 里的variable都是final static。换言之,常量。
JAVA里的function全部都是pass by value,之所以会造成object是pass by reference的感觉,是因为object的变量本身就是一个指针。在function中对指针所指的object的改变是持续有效的。但是,参考以下代码:
1 public class PassByValueTest { 2 3 public static void main(String[] args) { 4 TestData test1 = new TestData("A"); 5 setData(test1); 6 System.out.println(test1.getData()); 7 setObject(test1); 8 System.out.println(test1.getData()); 9 } 10 11 public static class TestData { 12 private String data; 13 14 public TestData(String data){ 15 this.data = data; 16 } 17 18 public String getData() { 19 return data; 20 } 21 22 public void setData(String data) { 23 this.data = data; 24 } 25 } 26 27 public static void setData(TestData test) { 28 test.setData("B"); 29 } 30 31 public static void setObject(TestData test) { 32 TestData test3 = new TestData("C"); 33 test = test3; 34 } 35 36 }
两个结果都是B,说明pass-by-value。
浙公网安备 33010602011771号