2015-06-20 54 views
0

我正在嘗試用Eclipse創建一個Java程序,它大致模擬了一個有幾個人或角色及其相互作用的小鎮。爲什麼項目的一個類中的方法不能識別另一個類的方法?

我添加了一個類 - 字符 - 有一個方法 - 符合(字符)。但是,當我嘗試呼叫遇到(字符)與另一個類中的字符對象時 - 位置 - 在Eclipse中的相​​同包和項目中會導致錯誤:方法meet(字符)未定義爲類型字符。

我包括的第一部分代碼是我的位置類。它只包含的方法。

代碼的第二組塊是我的字符類,僅包括滿足(字符)的getID()方法

import java.util.ArrayList; 
import java.util.Collection; 
import java.util.Iterator; 
import java.util.List; 
import java.util.ListIterator; 

public class location<character> implements List<character> { 

private String name; 
private ArrayList<character> occupants; 
private boolean professional; 
private int cost; 
private character owner; 
private int hours; 

public location(character o, boolean prof, String n, int c, int h) 
{ 
    name = n; 
    professional = prof; 
    cost = c; 
    owner = o; 
    hours = h; 

} 
//Methods other than add(character c) have been excluded 
public boolean add(character c) 
{ 
    for(character a:occupants) 
    { 
     //This if statement is the part with errors. 
     //Error message: The method meet(character) is undefined for the type character 
     if(c.meet(a)) 
     { 
      a.meet(c); 
     } 
    } 
    return occupants.add(c); 
} 
} 

的代碼第二塊,所述字符符合(字符)方法

import java.util.ArrayList; 


public class character 
{ 
    private String firstname; 
    private String lastname; 
    private job j; 
    private static int count; 
    private int id; 
    private String gender; 
    private ArrayList<Integer> relations = new ArrayList<Integer>(); 

    public character(String n, String l, String g) 
    { 
     firstname = n; 
     lastname = l; 
     gender = g; 
     id = count; 
     count = count + 1; 
    } 

    //Method meet, not being recognized by class location. 
    //Both files are in the same package in an Eclipse project. 

    public boolean meet(character person) 
    { 
     relations.ensureCapacity(person.getID()); 
     if(!(relations.get(person.getID()) > 0 && relations.get(person.getID()) <= 100)) 
     { 
      relations.add(person.getID(), new Integer(50)); 
      if(relations.get(person.getID()).intValue() == 50) 
      { 
       return true; 
      } 
     } 
     return false; 
    } 

    public int getID() 
    { 
     return id; 
    } 
} 

任何幫助將不勝感激,如果你需要我提供更多的我的代碼只是問。我尋找過像我這樣的問題,但是我還沒有找到一種方法將它返回相關結果。

回答

0

的問題是在這裏:

class location<character> implements List<character> 
       ^--here--^ 

在這種情況下,您的通用名稱是character,從而在你的代碼產生的問題。你需要擺脫通用的定義和使用:

class location implements List<character> 

事實上,你甚至不需要你location類來實現List<character>,只是把它作爲一個List<character>的包裝:

public class location<character> { 

    private List<character> occupants; 
    //... 

} 

最後但並非最不重要,我強烈建議您按照Naming Conventions for Java。這是通過CharNPC或類似的方法將Locationcharacterlocation這個類別重新命名爲location

+0

謝謝你,修好了! – Ryan

+0

不客氣。 –

相關問題