[英]Java class constants
我想為一個類定義一些公共類常量類變量,我也創建了一個實例。
在我的 Response 類中,我定義了一些我想在整個應用程序中用作常量的 responseCodes。
請不要擔心這段代碼的含義,這只是片段的復制和粘貼,以展示我如何嘗試使用類常量。
我的 IntelliJ 根本沒有抱怨這種語法,但是當我嘗試構建代碼時,我得到了
Filter.java:[84,36] cannot find symbol
symbol : variable BR_PARTIALLY_OK
我的帶有常量的示例類
package xx.xx.xxxxx.connector;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Response {
public static final int BR_OK = 200;
public static final int BR_PARTIALLY_OK = 250;
public static final int BR_NOT_AUTHORIZED = 401;
public static final int BR_REQUEST_TIMEOUT = 408;
public static final int BR_NOT_IMPLEMENTED = 501;
public static final int BR_SERVICE_UNAVAILABLE = 503;
private Map<String, List<String>> headers = new HashMap<String, List<String>>();
private String body = null;
public void addHeader(String key, List<String> value) {
this.headers.put(key, value);
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public Map<String, List<String>> getHeaders() {
return headers;
}
}
在另一個類中使用所需的示例
package xx.xx.xxxxx.filter; // other package, other maven artifact but depends response package
import xx.xx.xxxxx.connector.Response;
public class Filter {
public int doFilter(Service service) {
Response myResponse = service.post(..);
return Response.BR_PARTIALLY_OK;
}
}
我也試過
import static xxx.xxx.Response.*
或者
import static xxx.xxx.Response.BR_PARTIALLY_OK;
並使用
return BR_PARTIALLY_OK
導入時已出現相同的“找不到符號”錯誤
我看過接口和 const 類的例子,但我想知道為什么這個例子不起作用
編輯:也許問題是該類是在依賴工件中定義的?
pom.xml
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>xxx.xxxxx.xxx</groupId>
<artifactId>connector</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>used the Response.BR_PARTIALLY_OK constant here</groupId>
<artifactId>filter</artifactId>
<version>${connector.filter.version}</version>
<dependencies>
<dependency>
<groupId>defined the Response class in this artifact</groupId>
<artifactId>component</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>info.magnolia</groupId>
<artifactId>magnolia-core</artifactId>
<version>4.5.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.sourceforge.openutils</groupId>
<artifactId>openutils-log4j</artifactId>
<version>2.0.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<!-- Testing Dependencies -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.9.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>magnolia.public</id>
<url>http://nexus.magnolia-cms.com/content/groups/public</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</project>
我發現錯誤消息有點不對。
“變量 BR_PARTIALLY_OK”
多變的? 這會讓我假設代碼不包含“Response.BR_PARTIALLY_OK”而只包含“BR_PARTIALLY_OK”。
伙計們,感謝你們在這件事上花費的時間。 問題確實與構建有關。 而不是重建整個項目,我只是重建了一個工件(偶然)這導致了問題,因為 const 定義在另一個工件中,在添加常量后從未重建
構建父作用域自動解決了這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.