軟體開發筆記

純軟體開發筆記(目前不包含 Web,考慮以後都包含進去)

Java

爪哇島、咖啡
實在是太冗贅了

Java

Java 觀念 - final 關鍵字

📓 此篇不是很完整,隨時會有很大的變動

final 在 Java 是一個關鍵字,出現在不同的 Code 上有不同的用途。

出現在 class 上

代表此 class 不能被他類繼承。

刻意繼承會出現 Compile error。

出現在方法上

代表此方法不可以被重寫(Override)

刻意重寫會出現 Compile error。

出現在變數上

代表此變數不可以被重新賦值。刻意重新賦值會出現 Compile error。

但是如果該變數被指到一個物件上,物件的實際內容(狀態)仍然可以被改變,因為 fianl 在變數上只是定義是否可以重新賦值。

其他

Java

JDA 抓取 Discord Forum Channel 內的 Thread 清單

Code 範例

public class Main extends ListenerAdapter {

    public static final String TOKEN = "<BOT_TOKEN_HERE>";
    public static final String SERVER_ID = "<SERVER_ID_HERE>";
    public static final String PROJECT_FORUM_ID = "<FORUM_ID_HERE>";

    public static void main(String[] args) throws InterruptedException {
        JDA jda = JDABuilder.createDefault(Main.TOKEN).build();

        jda.addEventListener(new Main());
    }

    @Override
    public void onReady(ReadyEvent event) {
        System.out.println("Bot is ready");
        JDA jda = event.getJDA();

        Guild server = jda.getGuildById(SERVER_ID);
        assert server != null;
        ForumChannel channel  = server.getForumChannelById(PROJECT_FORUM_ID);
        assert channel != null;
        System.out.printf("Channel name: %s%n", channel.getName());
        List<ThreadChannel> threadChannels = channel.getThreadChannels();

        for(ThreadChannel thread : threadChannels){
            System.out.printf("Thread: %s%n", thread.getName());
        }
//        如果要正常關閉 Bot 的話需要以下指令
//        jda.shutdown();
    }
}

解釋

注意

Java

Java 觀念 - Type Casting

Type Casting 跟物件繼承很有關係,只要子類別繼承父類別,那他們就有 Casting 的關係。

直接看以下範例:

class Animal {
    void speak(){
        System.out.println("Default speak");
    }
}

class Bird extends Animal {
    @Override
    void speak() {
        System.out.println("ㄐㄐ");
    }
}

class Dog extends Animal {
    @Override
    void speak() {
        System.out.println("吉娃娃");
    }
}

public class main {
    public static void main(String[] args) {
        Animal animal = new Animal();
        Bird bird = new Bird();
        Dog dog = new Dog();

        animal.speak();
        bird.speak();
        dog.speak();

        // Upcasting and Downcasting

        Animal animal2;
        animal2 = bird; // Upcasting
        animal2.speak(); // works normally

        Bird bird2;
//        bird2 = animal; // Down casing, compile error
//        bird2 = (Bird)animal; // Compile pass
//        bird2.speak(); // but throw ClassCastException error

        Dog dog2;
//        dog2 = bird; // Obviously not working for compiling
//        dog2 = (Dog)bird; // Cannot casting to another child class, compile error.
    }
}

Spring (包含 Spring Boot)

Java 常用的網頁應用框架

Spring (包含 Spring Boot)

建立新的 Spring 專案

  1. 連上 https://start.spring.io/
  2. Project 部份選擇「Gradle - Kotlin」(這會使用 Kotlin DSL)
  3. Spring Boot  部份選擇後面不帶任何括弧的最新版本
  4. Project Metadata  照實填寫
  5. Packaging 選擇「Jar」
  6. Java 選擇最新版本(或是你電腦上有灌的版本)
  7. Dependencies 部份點擊「Add Dependencies...」,搜尋「Spring Web」後並把它加入其中
  8. 最後點擊最下面的「GENERATE」就會產出新專案的壓縮檔