访问静态类字段的更好方法

时间:2016-06-04 18:55:28

标签: java

import { Injectable } from '@angular/core';
import {StockComponent} from './stock.component';
import {AppComponent} from '../app.component';
import {Http, Response} from '@angular/http';
import './rxjs-operators';
    @Injectable() 
export class StockApiService {
    symbol: string
    public stocks = [

    ];

    purchased = ["",""];
    constructor(private http: Http) {
        http.get('http://localhost:8000/stock/' + this.symbol)
            .map(res => res.json())
            //parameter   //key          
            // .subscribe(stockInfo =>  this.stocks.push(stockInfo))
            .subscribe(stockInfo => console.log(stockInfo))
    }

    getStockInfo(symbol : string) {
        this.purchased.push(symbol);
        let stockLink: string = 'http://localhost:8000/stock/' + symbol;
        //writing logic for get stock search bar
    }
    //retrieves stock from array
    getStock (symbol : string) {
        for (var i = 0; i < this.stocks.length; i++) {
            if (symbol.toLowerCase() === this.stocks[i].symbol.toLowerCase()) {
                return this.stocks[i];
            }

        }
    }
}

对于使用AAA,我必须编写public final class Templates { public static class NewDeviceDetailsConsts { public static final String AAA = "aaaa"; public static final String BBB = "bbbb"; public static final String CCC = "cccc"; } } 并且这是一个长字符串,在我使用它的每个类中使用10-20次。

使用它是否有效,如, 我在我需要它的类中定义一个字段Templates.NewDeviceDetailsConsts.AAA并在类中使用DeviceConst .___。 没关系,还是我可以做得更好。

2 个答案:

答案 0 :(得分:2)

有几种方法可以解决这个问题。

  1. 创建静态导入:

    如果您的导入语句是,请添加此import static path.to.Templates.NewDeviceDetailsConsts.AAA;。这样,您只需输入AAA即可引用AAA对象。

    不幸的是,您必须在所有课程的顶部添加此行。

  2. Templates课程中创建一个getter。

    public static NewDeviceDetailsConsts getAAA(){
        return NewDeviceDetailsConsts.AAA;
    }
    

    然后使用Templates.getAAA()获取AAA对象。

  3. 保存对工人类内AAA对象的引用。

    private static NewDeviceDetailsConsts AAA = Templates.NewDeviceDetailsConsts.AAA;
    

答案 1 :(得分:1)

我会将enum用于此目的:

public final class Templates {
    public enum NewDeviceDetailsConsts {
        AAA("aaaa"), BBB("bbbb"), CCC("cccc");

        private String value;

        private NewDeviceDetailsConsts(String value) {
            this.value = value;
        }

        public String getValue() {
            return value;
        }
    }
}

然后你可以按如下方式使用常量:

NewDeviceDetailsConsts aaa = NewDeviceDetailsConsts.AAA;

如果您需要,您也可以使用AAA,BBB,......而不使用参数:

public final class Templates {
    public enum NewDeviceDetailsConsts {
        AAAA, BBBB, CCCC;
    }
}

最后,你不应该在课堂上定义它们。枚举也可以是顶级类,如下所示,除非它们必须是类的一部分:

public enum NewDeviceDetailsConsts {
    AAAA, BBBB, CCCC;
}