วันนี้นั่งไล่โค้ดตัวปลั๊กอิน GATE ทั้งวัน
กำลังเขียนปลั๊กอินเพื่อเอามาใช้กับโครงการที่กำลังทำอยู่ตอนนี้ที่ SIIT (เอ๊ะ ผมบอกรึยังนะ ว่าผมมาเป็นผู้ช่วยวิจัยอยู่นี่ ไว้ค่อยเล่าว่าทำอะไรละกัน ทีหลัง) ก็ใช้ GATE นี่แหละ
วันนี้พยายามแก้ warning ที่เจอมาตั้งแต่วันก่อน แต่ปล่อย ๆ ไปก่อน วันนี้ได้โอกาส ก็มาตามเก็บให้เรียบร้อย
โค้ดมันคล้าย ๆ นี้:
1: FeatureMap features = Factory.newFeatureMap();
2: features.put("key", object);
บรรทัดที่ 2 เนี่ย พอคอมไพล์ จะทำให้เกิด warning:
Note: MyJava.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
ไปเจอใน forum.java.sun.com เค้าบอกว่า มันเกิดเพราะ เราไม่ได้กำหนด parameter ให้กับตัว Map (เรื่อง generic)
ลองแก้ที่โค้ดตัวเอง ไม่สำเร็จ
ก็เลยต้องไปแก้โค้ดของ FeatureMap ของตัว GATE ซะ
ดังนี้:
ที่ไฟล์ gate/SimpleFeatureMap.java:
แก้
public interface SimpleFeatureMap extends Map
เป็น
public interface SimpleFeatureMap extends Map<Object, Object>
ที่ไฟล์ gate/util/SimpleMapImpl.java:
แก้
class SimpleMapImpl implements Map
เป็น
class SimpleMapImpl implements Map<Object, Object>
ลอง build GATE ดู ใช้ได้ build ผ่าน, ทดสอบรัน GATE โอเค
ลองคอมไพล์โปรแกรมตัวเอง (ที่เรียกใช้ FeatureMap) โอเค ไม่มี warning ละ เยี่ยม
ถ้าไม่มีซอร์สโค้ดแจกมา ให้ดู ให้แก้ คงทำงี้เองไม่ได้เนอะ ต้องรอเขาลูกเดียว ตั้งตา
เมลถาม(เอง)-ตอบ(เอง) เรื่องนี้เข้าเมลกลุ่ม ไปละ - -"
ไปประชุมเรื่อง YouMedia ก่อนนะ ;)
หมายเหตุ: นั่งเขียนที่ร้าน Cup B หยุดอยู่ที่ร้านนี้ เพราะหยุดดูข่าว iPhone ที่เค้าเปิดให้ดูหน้าร้าน (จอคอม) แล้วคนในร้านออกมาชวนคุย เราเลยนั่งทำงานอยู่ร้านนี้มันซะเลย หาที่นั่งทำงานเงียบ ๆ อยู่พอดี / Mac Cafe Mini @ Cup B
update: Ian Roberts หนึ่งในผู้ดูแล GATE ตอบรับแล้ว เดี๋ยวจะแก้โค้ดใน main GATE tree ให้ :)
2 comments:
มีอีกวิธีก็คือ
ใส่ annotation SuยpressWarnings ครอบ method ที่เรียกใช้ FeatureMap
อย่างตัวอย่างนี้
@SuppressWarnings("unchecked")
public static void main(String args[]) {
Map map = new HashMap();
map.put("hi", new Integer(1));
}
ถ้าไม่ใส่ SuppressWarnings มันจะฟ้องเตือนอย่างที่ bact' ว่า
มีคนแนะนำแบบนี้ในเมลกลุ่มเหมือนกัน
แต่แบบนี้เรียกว่า ซุกใต้พรม ป่ะ ? :{
พูดถึงว่าตอนรันมันคงไม่มีปัญหาหรอก เพราะเราคนเขียนรู้อยู่แล้วว่ามันจะเป็นอะไร
แต่จาวามัน strong-typed
... เอ๊ะ นี่มันยังไงกัน ถ้าไม่จำเป็นก็ไม่ต้องทำสิ
ทำไมต้องให้ภาษามาบังคับ!
เอาไงดี
เค้าคงคิดถึงเรื่อง เวลาคนอื่นมาดูโค้ดล่ะมั้ง
มันชัดเจนกว่า
แล้วแต่จะมอง
ข้อกำหนดมากชัดมาก ก็เรื่องมาก ยุ่งยาก
โดยธรรมชาติ
แล้วแต่จะเลือก เนอะ :)
Post a Comment