Javascript Java中数据与函数的分离

Javascript Java中数据与函数的分离,javascript,java,json,Javascript,Java,Json,我想用Java初始化一组单独的卡。这是我目前的做法: public ArrayList<Card> initDeck() { ArrayList<Card> cardDeck = new ArrayList<Card>(24); cardDeck.add(new Card("Emperor Augustus", 20.1, 40, 4.1, 300000, POWER_AND_INFLUENCE.VERY_HIGH)); cardDe

我想用Java初始化一组单独的卡。这是我目前的做法:

public ArrayList<Card> initDeck() {
    ArrayList<Card> cardDeck = new ArrayList<Card>(24);

    cardDeck.add(new Card("Emperor Augustus", 20.1, 40, 4.1, 300000, POWER_AND_INFLUENCE.VERY_HIGH));
    cardDeck.add(new Card("Jeff Bezos", 96, 22, 59.7, 268000, POWER_AND_INFLUENCE.HIGH));
    cardDeck.add(new Card("Bill Gates", 83.7, 41, 73, 112388, POWER_AND_INFLUENCE.MEDIUM));

    return cardDeck;
}
JS文件:

const cards = require("./cards.json").data;

function initDeck(cards) {
    const cardDeck = [];
    for (let i = 0; i < cards.length; i++) {
        cardDeck.push(cards[i]);
    }
    return cardDeck;
}

let cardDeck = initDeck(cards);
const cards=require(“./cards.json”).数据;
功能组(卡片){
const cardDeck=[];
for(设i=0;i

我研究了Java中卡初始化的其他实现。但是所有的例子都假设卡片的逻辑顺序,例如2,3,4…杰克,皇后,国王,王牌。但在我的示例中,这些卡不遵循任何逻辑顺序。

有几种方法可以将数据与代码分开(如从文件、数据库等加载)

如果希望从JSON文件加载数据,则可以使用从JSON读取数据并转换为Java对象(反序列化),如下所示:

public List<Card> initDeck() throws Exception {
    ObjectMapper mapper = new ObjectMapper();
    Card[] staff = mapper.readValue(new File("C:\\cards.json"), Card[].class);
    List<Card> cardDeck = Arrays.asList(staff);
    return cardDeck;
}
public List initDeck()引发异常{
ObjectMapper mapper=新的ObjectMapper();
Card[]staff=mapper.readValue(新文件(“C:\\cards.json”)、Card[].class);
List cardDeck=Arrays.asList(staff);
返回卡片组;
}

另外,作为旁注,请记住,为接口
List
as
return
类型(如上所示)编码始终是最佳实践,而不是像“ArrayList”这样的具体类,您可以查看同一主题。

Java可以使用包来读取各种格式的名称/值数据:JSON、YAML、,etc.
抛出异常
是否与函数体中的
try catch
-块相同?要么需要
捕获函数中的异常,要么从函数中
抛出
,以便调用方需要处理异常,那么在您编写的每个方法中添加
抛出
是否有意义?您不需要为其编写抛出每个方法,仅当存在选中的异常时,您需要在方法签名中指定,请参见此处:
public List<Card> initDeck() throws Exception {
    ObjectMapper mapper = new ObjectMapper();
    Card[] staff = mapper.readValue(new File("C:\\cards.json"), Card[].class);
    List<Card> cardDeck = Arrays.asList(staff);
    return cardDeck;
}