You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#迁移Java时类构造函数:this()语法含义及对应Java实现方法

C# 构造函数:this()语法说明及Java迁移方案

语法含义确认

你观察到的逻辑完全正确:C#中构造函数声明后跟随的:this(参数列表)就是调用当前类中参数匹配的其他构造函数。此处第二个FacTextBlock构造的入参正好匹配第一个三参数构造的签名,因此实例化时会先执行三参数构造的全部逻辑,再执行当前构造大括号内的自定义代码。

该语法是C#提供的「构造函数链」能力,作用是复用同类其他构造的逻辑,避免重复代码。

Java对应实现方式

Java原生支持同类构造调用的能力,语法和调用父类构造的super()高度一致,直接使用this(参数列表)即可,**唯一强制要求是this()语句必须放在当前构造函数的第一行**,和super()`的位置规则完全一致。
转换后的示例代码如下:

public class FacTextBlock extends Block {
    private String _Text;
    private FacFont _Font;
    private FacDocument __Document;
    private boolean _IsVirtual;

    // 对应原C#第一个构造函数
    public FacTextBlock(FacRegion region, String text, FacFont font) {
        // 对应原C#的:base(...),super必须放第一行
        super(region, new FacBlock[0]);

        int cleanCount = 0;
        for (int i = text.length() - 1; i > -1; i--) {
            // 8232对应Unicode行分隔符
            if (text.charAt(i) == 8232) {
                cleanCount++;
            } else {
                break;
            }
        }
        if (cleanCount != 0) {
            text = text.substring(0, text.length() - cleanCount);
        }

        // 过滤[]字符
        StringBuilder filtered = new StringBuilder();
        for (char c : text.toCharArray()) {
            if (c != '[' && c != ']') {
                filtered.append(c);
            }
        }
        text = filtered.toString();

        this._Text = text;
        this._Font = font;
    }

    // 对应原C#第二个构造函数
    public FacTextBlock(FacTextBlock[] textBlocks) {
        // 对应原C#的:this(...),必须放第一行
        this(FacBlock.getRegion(textBlocks), FacTextBlock._GetMergedText(textBlocks), textBlocks[0].getFont());

        FacDocument document = textBlocks[0].getDocument();
        if (document != null) {
            this.__Document = document;
        }
        this._IsVirtual = true;
    }

    // 此处省略其他getter、setter及静态方法实现
}

注:以上代码仅为核心逻辑对应实现,实际迁移时可根据项目的编码规范调整成员变量访问方式、方法命名风格等细节。

内容的提问来源于stack exchange,提问作者Louay Gourrida

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:27:03