Справка не может вызвать нестатическую модель метода в контроллере игровой платформы?

Я следил за игрой framework 1.1.1 YABE, добавляя учебник по комментариям, а затем столкнулся с этой проблемой.

проблема в том, что появляется это сообщение об ошибке

Ошибка компиляции

Не удалось скомпилировать файл /app/controllers/Application.java. Возникла ошибка: невозможно сделать статическую ссылку на нестатический метод addComment(String, String, boolean, String) из типа Permainan.

Это мой контент контроллера Application.java

package controllers;

import play.*; 
import play.mvc.*;
import play.libs.*;
import java.util.*; 
import models.*;

public class Application extends Controller { 

  public static void permainanKomentar(Long permainanId, String author, String email, boolean showEmail, String content) {
    Permainan permainan = Permainan.findById(permainanId);
    Permainan.addComment(author, email, showEmail, content); >> (this line) 
    show(permainanId);
  }
}

и для модели Permainan.java

package models;

import java.util.*;
import javax.persistence.*;
import play.data.binding.*;
import play.db.jpa.*;
import play.data.validation.*;

@Entity
public class Permainan extends Model {

  @Required
  public String nama;

  @Required
  @MaxSize(5000)
  @Lob
  public String deskripsi;

  @MaxSize(2000)
  @Lob
  public String material;

  @MaxSize(4000)
  @Lob
  public String syair;

  public Date postedAt;

  @OneToMany(mappedBy="permainan", cascade=CascadeType.ALL)
  public List<Komentar> komentar;

  @ManyToMany(cascade=CascadeType.PERSIST)
  public Set<Tag> tags;

  public Permainan(String nama, String deskripsi, String material, String syair) {

    this.komentar = new ArrayList<Komentar>();
    this.tags = new TreeSet<Tag>();
    this.nama = nama;
    this.deskripsi = deskripsi;
    this.material = material;
    this.syair = syair;
    this.postedAt = new Date();
  }

  public Permainan addComment(String author, String email, boolean showEmail, String content) {
    Komentar newKomentar = new Komentar(this, author, email, showEmail, content).save();
    this.komentar.add(newKomentar);
    this.save();
    return this;
  }
}

person angga    schedule 29.05.2011    source источник
comment
Привет, ребята, это была моя ошибка Permainan.addComment(автор, электронная почта, showEmail, содержание); ›› (эту строку) заменить на permainan.addComment(автор, адрес электронной почты, показать адрес электронной почты, контент); ›› (эта строка)   -  person angga    schedule 29.05.2011


Ответы (1)


Java — это язык, чувствительный к регистру, а это означает, что вы должны быть осторожны с регистром слов, которые вы используете. В вашем примере:

Постоянный Постоянный = Постоянный.findById(постоянныйId);

Здесь вы определяете экземпляр класса Permainan, который называется permainan (обратите внимание, что вы используете одно и то же для класса и экземпляра с небольшой разницей в случае).

Permainan.addComment(автор, email, showEmail, контент);

Здесь вы используете класс Permainan, а не экземпляр; и для вашего объекта нет статического метода addComment.

Поэтому я думаю, что вы должны использовать:

permainan.addComment(автор, электронная почта, showEmail, содержание);

person bobylito    schedule 30.05.2011