0

我正在为 Persons 开发一门课程,对此我有一两个问题。

/**
 * ADT for persons which is completed which subclasses
 * to creating actors with specific properties
*/
public class Person {

    /**
     * Name of the Person.
     */
  public String name;

    /**
     * The World which this Person is associated with.
     */
  public World world;

    /**
     * Tells where this Person is at the moment.
     */
  public Place where;

    /**
     * The inventory, contains Things.
     */
  public Collection<Thing> inventory;

    /**
     * Shows how the Person looks like
     */
  public Image appearance;

    /**
     * Create Person named `name' in world `world'.
     * 
     * @param world The world where the Person is created.
     * @param name Name of the Person.
     * @param app An image used to display the Person.
     */
  public Person( World world, String name, Image app ) {
    this.world = world;
    this.name = name;
    this.appearance = app;

    where = world.defaultPlace();
    where.enter( this );

    inventory = Collections.synchronizedCollection( new LinkedList() );
  }

...

  1. Person 类应该是公共的还是默认访问更好?一个人,一个私人的人应该是公共的,即使这里的含义并不完全相同,这不是有点奇怪。

  2. 当我的 IDE 发出警告时,我应该如何处理inventory = Collections.synchronizedCollection( new LinkedList() );?它警告我的类型安全。

谢谢

4

2 回答 2

4
  1. 如果 Person 只会在一个包中使用,您可以将其设为默认值。否则public是有道理的。

  2. 尝试给出泛型类型。

    List<Person> people = Collections.synchronizedList(new LinkedList<Person>());
    

顺便说一句:大多数 IDE 将自动/快速修复这些问题中的任何一个。

于 2012-06-11T12:23:01.603 回答
2

对于警告,您需要指定元素的类型LinkedList

inventory = Collections.synchronizedCollection( new LinkedList<Thing>());

至于private/ publicfor Person:如果该类 Person被标记public,则意味着其他代码(其包的另一端)可以根据需要引用/使用它。当你声明一个as类型的成员变量时,意味着其他代码不能直接访问该成员变量。两者互不影响Personprivate

于 2012-06-11T12:26:53.223 回答