为什么我不能实例化一个新的 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();