为什么我不能实例化一个新的 Class 对象?
Why can I not instantiate a new Class object?
所以这是一个真正令人头疼的问题:我有一些代码可以测试是否满足某些条件;当遇到时创建一个新对象,然后为该对象设置一些值,然后将该对象添加到 PriorityQueue 以供以后进一步处理。代码看起来像这样:
...
import com.example.Position; //Class is properly imported here
...
@Service
public class TradeService extends Thread {
private final Agent uAgentAcct = new Agent();
private final HttpClient httpClient = HttpClient.newHttpClient();
private final Clock clock = new Clock(httpClient);
private final Authenticator auth = new Authenticator(clock.getServerTime());
private final MessageConverterFactory parseMsg = new MessageConverterFactory();
public static ArrayList<Asset> watchList = new ArrayList<Asset>();
private Position activePosition;
@Override
public void run() {
[redacted]
}
private static Position entryScan(ArrayList<Asset> tips) {
PriorityQueue<Position> posQ = new PriorityQueue<Position>(new PositionComparator());
for(int i = 0; i < tips.size(); i++) {
Asset token = tips.get(i); //Instantiating a new Asset instance works just fine right here...
ArrayList<Candle> chart = token.getChart();
if(chart.size() >= 14) {
[redacted]
if(downTrend && reversion && rsi < 10 && current.getClose() > last.getHigh()) {
Position long = new Position(); //But I can't instantiate a new Position instance here? This gets an error from the compiler that states: Position cannot be resolved to a variable
}
}
}
如上所述,我有一个名为“Position”的 class 导入到此 class;但是,当尝试在我的私有静态 entryScan 方法的 if 块中创建此 class 的新实例时,编译器就好像它不知道我在引用什么 class 一样,这绝对不会对我来说有意义。我得到的唯一快速修复选项(我正在使用 Spring Boot,顺便说一句)是创建一个字段“Position”,创建一个局部变量“Position”,或者创建一个参数“Position”; none 其中我想要或需要做的。通常我希望有一个选项来导入 class;但由于它已经被导入,我不确定为什么编译器无法识别它。这几乎就像它试图将我的变量类型声明读取为 TradeService 的字段值一样,这与我实际引用的内容相差甚远。所以我想我的问题是为什么它会这样,我如何强制它“看到”位置 class 作为 class,而不是字段值?
您正在为变量名使用保留关键字 long
。将其更改为其他内容,例如Position position = new Position();
所以这是一个真正令人头疼的问题:我有一些代码可以测试是否满足某些条件;当遇到时创建一个新对象,然后为该对象设置一些值,然后将该对象添加到 PriorityQueue 以供以后进一步处理。代码看起来像这样:
...
import com.example.Position; //Class is properly imported here
...
@Service
public class TradeService extends Thread {
private final Agent uAgentAcct = new Agent();
private final HttpClient httpClient = HttpClient.newHttpClient();
private final Clock clock = new Clock(httpClient);
private final Authenticator auth = new Authenticator(clock.getServerTime());
private final MessageConverterFactory parseMsg = new MessageConverterFactory();
public static ArrayList<Asset> watchList = new ArrayList<Asset>();
private Position activePosition;
@Override
public void run() {
[redacted]
}
private static Position entryScan(ArrayList<Asset> tips) {
PriorityQueue<Position> posQ = new PriorityQueue<Position>(new PositionComparator());
for(int i = 0; i < tips.size(); i++) {
Asset token = tips.get(i); //Instantiating a new Asset instance works just fine right here...
ArrayList<Candle> chart = token.getChart();
if(chart.size() >= 14) {
[redacted]
if(downTrend && reversion && rsi < 10 && current.getClose() > last.getHigh()) {
Position long = new Position(); //But I can't instantiate a new Position instance here? This gets an error from the compiler that states: Position cannot be resolved to a variable
}
}
}
如上所述,我有一个名为“Position”的 class 导入到此 class;但是,当尝试在我的私有静态 entryScan 方法的 if 块中创建此 class 的新实例时,编译器就好像它不知道我在引用什么 class 一样,这绝对不会对我来说有意义。我得到的唯一快速修复选项(我正在使用 Spring Boot,顺便说一句)是创建一个字段“Position”,创建一个局部变量“Position”,或者创建一个参数“Position”; none 其中我想要或需要做的。通常我希望有一个选项来导入 class;但由于它已经被导入,我不确定为什么编译器无法识别它。这几乎就像它试图将我的变量类型声明读取为 TradeService 的字段值一样,这与我实际引用的内容相差甚远。所以我想我的问题是为什么它会这样,我如何强制它“看到”位置 class 作为 class,而不是字段值?
您正在为变量名使用保留关键字 long
。将其更改为其他内容,例如Position position = new Position();