วันนี้อยากจะเขียนบล๊อกเกี่ยวกับที่ทำให้หมดครับเลยเอาโจทย์ข้อถัดมา มาแก้กันเลยครับ สำหรับโจทย์ข้อนี้จะมาเรียนรู้เรื่อง reflection ของ java กัน หากใครไม่ค่อยมีความรู้แนะนำบล๊อก Reflections on Java Reflection รับลองครับว่าเบื้องต้นทุกคนต้องเข้าใจแน่นอนครับ สำหรับโจทย์ที่ได้รับคือ จะมี folder สำหรับเก็บ plugins ของการ apply เพื่อใช้ร่วมกับข้อความที่เราต้องการโดยหากเราเอาไฟล์ .class ไปวางในโฟลเดอร์นั้น String ที่เราส่งค้าไปจะทำการเปลี่ยนสไตล์ตามที่เราตั้งไว้ใน plugins นั้นครับ โดยในที่นี้จะมี plugins 3 ไฟล์คือ DoubleSpace.class NonWordRemove.class UpperCase.class สำหรับในส่วนของการสร้าง interface สำหรับเพื่อให้ plugins ของเราสามารถเรียกใช้ได้พร้อมกัน

package softwareskill;
public interface PluginsInterface {
    String Convert(String senTence);
}

ในส่วนของการเขียน plugins ทั้งหมดในการทำการแก้ไขลักษณะของ ตัวอักษรเราจะใช้ การ implement มาจาก interface ที่เราเขียนขึ้น สำหรับโค้ด DoubleSpace เราสามารถเขียนได้ประมาณนี้ครับ

public class DoubleSpace implements PluginsInterface{
 
    public String Convert(String senTence) {
        return senTence.replaceAll(" ", "  ");
    }
 
}

จากโค้ดเมื่อเรา implemens PluginsInterface ผมจะทำการเขียน method convert ใหม่โดยให้เปลี่ยนจาก space bar เป้น double spacebar โดยการใช้ method replaceAll เพื่อทำการแทนค่าที่เจอด้วย space bar ครั้งตามที่เราต้องการ
สำหรับโค้ดของ Uppercase จะเห็นว่าจะคล้ายๆกัน

public class UpperCase implements PluginsInterface{
    public String Convert(String senTence) {
        return senTence.toUpperCase();
    }
}

และส่วนสุดท้ายคือหากไม่ใช่ตัวอักษรหรือตัวเลขให้ทำการตัดทิ้งไปครับ ในที่นี้ผมจะใช้ regular expression ที่ได้ทำการศึกษามาแล้วเมื่อบทความก่อนหน้า

public class NonWordRemove implements PluginsInterface{
    public String Convert(String senTence) {
        return Pattern.compile("[^(A-Za-z0-9 ) ]").matcher(senTence).replaceAll("");
    }
}

สำหรับในส่วนของการนำไปใช้ก็จะเป็นโค้ดประมาณนี้นะครับโดยจะต้องมีการอ้าง path ที่ได้ทำการเก็บไฟล์ของ .class ที่ได้ผ่านการ compile มาแล้วครับ เพื่อจะนำ class ที่ได้ทั้งหมดมาใช้ครับซึ่งจะได้โค้ดประมาณนี้ครับ

public class Reflection {
    private final String CLASSPATH="/Users/mLri/NetBeansProjects/Softwareskill/build/classes/softwareskill/plugins";
 
    public static void main(String args[]){
        Reflection reflection = new Reflection();
        String output = reflection.applyAllPlugins("I love you G'meay,,,,,");
        System.out.println(output);
    }
    public String applyAllPlugins(String input){
        String[] plugIns = this.getAllpluginClass();
        for(int i=0;i
 
 
ก้เป็นอันว่าเรียบร้อยครับสำหรับการทำโจทย์ในข้อนี้แต่หรับการ desiเื อาจะยังไม่ดีเท่าไรนะครับ หากใครมีอะไรแนะนำสามารที่จะแนะนำได้เลยนะครับ ขอบคุณครับ สามารถดูเรื่อง <a href="http://www.jaideawhosting.com/nolifelover/?p=126">regular expression </a>

Related posts:

  1. Java Communications API on Windows ...
  2. text-shadow on ie with jquery drop shadow plugins สำหรับใครที่เคยใช้ css สำหรับสร้างเงานให้กับตัวอักษรนั้นหลายคนคงไม่ทราบว่าใน ie ไม่มี property นี้ครับ ผมก็ไม่เข้าใจเหมือนกันว่าทำไมว่า ie มันไม่ค่อยเหมือนชาวบ้านเท่าไร...

Related posts brought to you by Yet Another Related Posts Plugin.

Leave a Reply