2
好了,所以这里是我的代码:错误:无法找到符号 - 无法访问另一个类的公共领域
class ConnectionTest implements Connection {
Random randomGenerator;
public String id;
public ConnectionTest() {
randomGenerator = new Random();
id = UUID.randomUUID().toString();
}
public boolean testConnection() {
if (randomGenerator.nextInt(10)<3) //randomly make some false.
return false;
return true;
}
}
class ConnectionFactoryTest implements ConnectionFactory {
public Connection newConnection() {
Connection c = new ConnectionTest();
if (c == null)
throw new ConnectionException("New connection failed.");
System.out.println("New connection: " + c.id);
return new ConnectionTest();
}
}
,编译器抱怨c
没有id
。我宣称id
是公开的,所以不应该被其他类访问?
尽管它是ConnectionTest的一个实例?哦,我明白了,所以类型被首先声明,而构造函数的字段被忽略了? – Mirror318
它们不被“忽略”,它只是JVM的工作方式。它只看到引用('Connection')类型的属性,而不是'ConnectionTest'。 –
您需要将'c'转换为'ConnectionTest'(通常不是个好主意)来访问'id'字段 – k0ner