Javascript Java中数据与函数的分离
我想用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
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
asreturn
类型(如上所示)编码始终是最佳实践,而不是像“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;
}