为什么我会得到<identifier>?</identifier>

时间:2013-08-27 11:27:56

标签: java identifier

以下代码:

import java.util.ArrayList;
import java.awt.Point;
public class Polygon{
    ArrayList<Point> points;

    //constructs polygon without points

    public Polygon() {
        points = new ArrayList<Point>();
    }


    /*
     * adds a point to points
     */
    public void addPoint(Point){
        points.add(Point);
    }

    public void draw(){
        for(int i = 0; i < points.size(); i++){
             if(i == 0){
                 points.get(0).draw()
             }else{
                 points.get(i).draw()
                 Line line = new Line(points.get(i-1).getX(), points.get(i-1).getY(), points.get(i).getX(), points.get(i).getY());
                 line.draw();                 
             }
        }

        if(points.size() >= 2){
            Line line = new Line(points.get(-1).getX(), points.get(-1).getY(), points.get(-2).getX(), points.get(-2).getY());
            line.draw();
        }
    }


}

给出了异常消息:

<identifier> expected for public void addPoint(Point)

我只是想不通为什么?通常需要这些标识符来告诉ArrayList它将要保存哪些对象,对吗?

5 个答案:

答案 0 :(得分:4)

您缺少标识符。 Point是一种类型。

public void addPoint(Point p){
        points.add(p);
    }

答案 1 :(得分:1)

Identifier

的定义
  

标识符是变量,方法,类,包和接口的名称   与文字不同,它们本身不是事物,只是提及它们的方式。

     

在HelloWorld程序中,HelloWorld,String,args,main和println是标识符。

这里你错过了命名类型Point的addPoint方法参数。所以你得到错误 使用此代码

 public void addPoint(Point p){
     points.add(p);
  }

答案 2 :(得分:0)

您定义方法的方式是错误的。您的方法应该有类型(在您的情况下为Point),后跟一个标识符(例如p

public void addPoint(Point p){
   points.add(p);
}

检查JLS 8.4,其中说明了

  

方法或构造函数的形式参数(如果有)   由逗号分隔的参数说明符列表指定。每   参数说明符由类型组成(可选地前缀为   最终修饰符和/或一个或多个注释)和标识符   (可选地后跟括号),指定的名称    的参数

答案 3 :(得分:0)

您的“addPoint”方法定义不正确,它没有“Point”的任何标识符。它应该写成:

public void addPoint(Point pnt){
        points.add(pnt);
    }

答案 4 :(得分:0)

方法声明语法:

public void doSomething(Type variable){

     // logic
}

- 在您的情况下,您错过了variable部分。

正确方法:

 public void addPoint(Point point){

        points.add(point);
 }