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

使用Path2D类绘制三角形时遇‘无法实例化Path2D类型’错误求助

问题原因及解决方案

核心问题

Path2D是Java中的抽象类,抽象类无法直接通过new关键字实例化,这就是你触发“Cannot instantiate the type Path2D”报错的根本原因。

修复方案

你需要使用Path2D的具体实现子类:Path2D.Double(默认用双精度浮点存储坐标)或Path2D.Float(单精度浮点存储,内存占用更小),二者API完全一致,仅精度有区别。

修改关键代码

将创建路径对象的代码替换为:

Path2D path = new Path2D.Double();
// 或单精度版本:Path2D path = new Path2D.Float();

完整修复后的代码

package houseGoesVroom;

import java.awt.Graphics2D;
import java.awt.geom.*;

public class HousePlans 
{
    //instance variables
    private int x;
    private int y;
    
    //constructor
    public HousePlans(int cornerX, int cornerY)
    {
        x = cornerX;
        y = cornerY;
    }
    
    //draw method
    public void draw(Graphics2D g2)
    {
        int r = (int) (256 * Math.random());
        int g = (int) (256 * Math.random());
        int b = (int) (256 * Math.random());
        
        g2.fillRect(0, 40, 80, 120);
        
        // 使用Path2D的具体子类实例化
        Path2D path = new Path2D.Double();
        path.moveTo(0,40);
        path.lineTo(40,0);
        path.lineTo(80, 40); 
        path.closePath();
        g2.draw(path);
    }
}

额外提示

你代码中定义的x和y实例变量目前未在draw方法中使用,当前绘制的图形都是固定坐标。如果需要根据构造函数传入的cornerX和cornerY调整房屋位置,可以给所有绘制坐标加上x和y的偏移量,比如path.moveTo(x, y+40)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:13:17