首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 轉 Java:List/Dictionary/屬性/結構體完整對應實作

     編輯:程式設計綜合問答

原始 C# 需求

// 1. 方法集合
public static List<MethodInfo> SameUnitParaMethod { get; set; }

// 2. 類型關係字典:方法名 -> 關係類型
public static Dictionary<string, TypeRelation> TypeRelation { get; set; }

// 3. 複雜類別
public class UnitScalarTypeRelation {
    public string ReturnType { get; set; }
    public SubElementType SubTypeType = SubElementType.AscOrder;
    public List<string> UnitParaType { get; set; }
}

Java 對應實作

1. 靜態集合初始化

public class MethodRegistry {
    // 對應 List
    public static List<Method> sameUnitParaMethod = new ArrayList<>();
    
    // 對應 Dictionary
    public static Map<String, TypeRelation> typeRelation = new HashMap<>();
    
    public static void register(Method m) { sameUnitParaMethod.add(m); }
    public static void registerRelation(String name, TypeRelation rel) { typeRelation.put(name, rel); }
}

2. 完整類別轉換

public class UnitScalarTypeRelation {
    private String returnType;
    private SubElementType subTypeType = SubElementType.AscOrder;
    private List<String> unitParaType = new ArrayList<>();

    public String getReturnType() { return returnType; }
    public void setReturnType(String returnType) { this.returnType = returnType; }

    public SubElementType getSubTypeType() { return subTypeType; }
    public void setSubTypeType(SubElementType subTypeType) { this.subTypeType = subTypeType; }

    public List<String> getUnitParaType() { return unitParaType; }
    public void setUnitParaType(List<String> unitParaType) { this.unitParaType = unitParaType; }
}

3. 枚舉對應

public enum SubElementType {
    AscOrder, Combination, DisOrder
}

public enum TypeRelation {
    DIV_LENGTH_SPEED, // 長度 ÷ 速度
    // 其他關係...
}

C# ↔ Java 核心對照表

C#Java關鍵差異
List<T>List<T> (ArrayList/LinkedList)介面導向,建議宣告 List<T> 實例化 ArrayList
Dictionary<K,V>Map<K,V> (HashMap/TreeMap)同理
public T Prop { get; set; }private T prop; public T getProp() {...} public void setProp(T v) {...}Java 無屬性語法,需手寫 Getter/Setter (Lombok @Data 可自動生成)
structclass (final + record Java 14+)Java 無值型別,用不可變類別模擬
static 建構函式static { ... } 靜態區塊初始化靜態集合用

使用範例

// 註冊方法
MethodRegistry.register(MyClass.class.getMethod("add", int.class, int.class));
MethodRegistry.registerRelation("DIV_LENGTH_SPEED", TypeRelation.DIV_LENGTH_SPEED);

// 取用
List<Method> methods = MethodRegistry.sameUnitParaMethod;
TypeRelation rel = MethodRegistry.typeRelation.get("DIV_LENGTH_SPEED");

善用 Lombok @Data/@Builder 可大幅減少樣板碼,讓 Java 程式碼更接近 C# 屬性體驗。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved