Posted on 2006-01-25 11:40
小明 閱讀(4088)
評論(16) 編輯 收藏 引用 所屬分類:
C/C++
1995年出現(xiàn)的Java語言確實(shí)是一門偉大的語言,盡管它也不是完美的語言,而C++是一門比較"古老"的預(yù)言了,Java中有很多值得C++借鑒的東西。不知道未來的C++ 0x標(biāo)準(zhǔn)出來以后,C++會變成怎樣?
1.強(qiáng)大的反射機(jī)制和RTTI特性這個(gè)特性是當(dāng)前流行的J2EE framework的基礎(chǔ),如Spring,Hibernate,無不利用了Java強(qiáng)大的反射機(jī)制。
Java可以在運(yùn)行期動態(tài)創(chuàng)建class,并且invoke某一個(gè)方法。
MyClass helper = (MyClass) Class.forName(className).newInstance();
2.內(nèi)建對多線程的支持和synchronized關(guān)鍵字
C++標(biāo)準(zhǔn)本沒有提供比如創(chuàng)建thread的方法,不過現(xiàn)在出現(xiàn)了boost::thread應(yīng)該是將來的C++標(biāo)準(zhǔn)。Java中有synchronized這個(gè)關(guān)鍵字,這是一種很簡單,安全的鎖機(jī)制。多線程編程很重要,但是也很復(fù)雜。希望新的C++ 0x標(biāo)準(zhǔn)能支持。
synchronized void initConfig() {
if (!loaded) {
load();
loaded = true;
}
}
3.匿名類匿名類可以有效的減少類的數(shù)目,是一種很有用的語言特性
new Thread(new Runnable() {
public void run() {
downloader.download();
}
}).start();
上面是啟動一個(gè)新的thread來執(zhí)行下載任務(wù)
4.final關(guān)鍵字final使得更有效的表達(dá)設(shè)計(jì)者不希望被繼承的意圖。Java里面的final不等于C++的const。final用于class前面表示class不希望被繼承,用于成員函數(shù)之前表示不希望被覆蓋。這對于類庫的設(shè)計(jì)是很重要的。畢竟不是每個(gè)類都為被繼承做好了準(zhǔn)備。
5.構(gòu)造函數(shù)可以互相調(diào)用
這個(gè)特性使得寫構(gòu)造函數(shù)更加方便
class Test
{
public Test()
{
this(1);
}
public Test(int i)
{
this.i = i;
}
private int i;
}
6.package的概念
package不但有比C++ namespace更加強(qiáng)大避免沖突的功能,而且提供了一種更清晰的源代碼結(jié)構(gòu)。
比如java中
package com.cppblog.io.*;
C++要實(shí)現(xiàn)這樣的,必須
namespace com
{
namespace cppblog
{
namespace io
{
}
}
}
7.finally關(guān)鍵字
finally使得exception設(shè)計(jì)更加完備.很遺憾,C++里面只有try catch,雖然可以通過一些方法來work around,但是畢竟不是很方便。
try{
openConnection();
}
catch(ConnectionException e){
e.printStackTrace();
}
finally{
closeConnection();
}