java實(shí)現(xiàn)簡(jiǎn)單的俄羅斯方塊
本文實(shí)例為大家分享了java實(shí)現(xiàn)簡(jiǎn)單俄羅斯方塊的具體代碼,供大家參考,具體內(nèi)容如下
結(jié)合網(wǎng)上的資料剛做完課程設(shè)計(jì),具體代碼如下:
public class TetrisPanel extends JPanel{ ? ? private final int[][] map = new int[13][23];// map[列號(hào)][行號(hào)]。真正的方塊區(qū)是:21行*10列。邊框(2列,1行) ? ? // 方塊的形狀: ? ? // 第一維代表方塊類(lèi)型(包括7種:S、Z、L、J、I、O、T) ? ? // 第二`在這里插入代碼片`維代表旋轉(zhuǎn)次數(shù) ? ? // 第三四維代表方塊矩陣 ? ? // shapes[type][turnState][i] i--> block[i/4][i%4] ? ? int[][][] shapes = new int[][][] { ? ? ? ? ? ? /* ? ? ? ? ? ? ?* 模板 { {0,0,0,0,0,0,0,0, 0,0,0,0, 0,0,0,0}, {0,0,0,0,0,0,0,0, 0,0,0,0, ? ? ? ? ? ? ?* 0,0,0,0}, {0,0,0,0,0,0,0,0, 0,0,0,0, 0,0,0,0}, {0,0,0,0,0,0,0,0, 0,0,0,0, ? ? ? ? ? ? ?* 0,0,0,0} } ? ? ? ? ? ? ?*/ ? ? ? ? ? ? // I ? ? ? ? ? ? { { 1, 1, 1, 1, ? ? ? ? ? ? ? ? 0, 0, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 }, ? ? ? ? ? ? ? { 0, 1, 0, 0, ? ? ? ? ? ? ? ? 0, 1, 0, 0, ? ? ? ? ? ? ? ? 0, 1, 0, 0, ? ? ? ? ? ? ? ? 0, 1, 0, 0 }, ? ? ? ? ? ? ? { 1, 1, 1, 1, ? ? ? ? ? ? ? ? 0, 0, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 }, ? ? ? ? ? ? ? { 0, 1, 0, 0, ? ? ? ? ? ? ? ? 0, 1, 0, 0, ? ? ? ? ? ? ? ? 0, 1, 0, 0, ? ? ? ? ? ? ? ? 0, 1, 0, 0 } }, ? ? ? ? ? ? // S ? ? ? ? ? ? { { 0, 0, 1, 1, ? ? ? ? ? ? ? ? 0, 1, 1, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 }, ? ? ? ? ? ? ? { 0, 1, 0, 0, ? ? ? ? ? ? ? ? 0, 1, 1, 0, ? ? ? ? ? ? ? ? 0, 0, 1, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 }, ? ? ? ? ? ? ? { 0, 0, 1, 1, ? ? ? ? ? ? ? ? 0, 1, 1, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 }, ? ? ? ? ? ? ? { 0, 1, 0, 0, ? ? ? ? ? ? ? ? 0, 1, 1, 0, ? ? ? ? ? ? ? ? 0, 0, 1, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 } }, ? ? ? ? ? ? // Z 第3行: shapes[2][2][] ? ? ? ? ? ? { { 1, 1, 0, 0, ? ? ? ? ? ? ? ? 0, 1, 1, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 }, ? ? ? ? ? ? ? { 0, 1, 0, 0, ? ? ? ? ? ? ? ? 1, 1, 0, 0, ? ? ? ? ? ? ? ? 1, 0, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 }, ? ? ? ? ? ? ? { 1, 1, 0, 0, ? ? ? ? ? ? ? ? 0, 1, 1, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 }, ? ? ? ? ? ? ? { 0, 1, 0, 0, ? ? ? ? ? ? ? ? 1, 1, 0, 0, ? ? ? ? ? ? ? ? 1, 0, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 } }, ? ? ? ? ? ? // J ? ? ? ? ? ? { { 0, 0, 1, 0, ? ? ? ? ? ? ? ? 0, 0, 1, 0, ? ? ? ? ? ? ? ? 0, 1, 1, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 }, ? ? ? ? ? ? ? { 0, 1, 0, 0, ? ? ? ? ? ? ? ? 0, 1, 1, 1, ? ? ? ? ? ? ? ? 0, 0, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 }, ? ? ? ? ? ? ? { 0, 1, 1, 0, ? ? ? ? ? ? ? ? 0, 1, 0, 0, ? ? ? ? ? ? ? ? 0, 1, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 }, ? ? ? ? ? ? ? { 0, 1, 1, 1, ? ? ? ? ? ? ? ? 0, 0, 0, 1, ? ? ? ? ? ? ? ? 0, 0, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 } }, ? ? ? ? ? ? // O ? ? ? ? ? ? { { 0, 1, 1, 0, ? ? ? ? ? ? ? ? 0, 1, 1, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 }, ? ? ? ? ? ? ? { 0, 1, 1, 0, ? ? ? ? ? ? ? ? 0, 1, 1, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 }, ? ? ? ? ? ? ? { 0, 1, 1, 0, ? ? ? ? ? ? ? ? 0, 1, 1, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 }, ? ? ? ? ? ? ? { 0, 1, 1, 0, ? ? ? ? ? ? ? ? 0, 1, 1, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 } }, ? ? ? ? ? ? // L ? ? ? ? ? ? { { 0, 1, 0, 0, ? ? ? ? ? ? ? ? 0, 1, 0, 0, ? ? ? ? ? ? ? ? 0, 1, 1, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 }, ? ? ? ? ? ? ? { 0, 1, 1, 1, ? ? ? ? ? ? ? ? 0, 1, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 }, ? ? ? ? ? ? ? { 0, 1, 1, 0, ? ? ? ? ? ? ? ? 0, 0, 1, 0, ? ? ? ? ? ? ? ? 0, 0, 1, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 }, ? ? ? ? ? ? ? { 0, 0, 0, 1, ? ? ? ? ? ? ? ? 0, 1, 1, 1, ? ? ? ? ? ? ? ? 0, 0, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 } }, ? ? ? ? ? ? // T ? ? ? ? ? ? { { 0, 1, 0, 0, ? ? ? ? ? ? ? ? 1, 1, 1, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 }, ? ? ? ? ? ? ? { 0, 1, 0, 0, ? ? ? ? ? ? ? ? 1, 1, 0, 0, ? ? ? ? ? ? ? ? 0, 1, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 }, ? ? ? ? ? ? ? { 0, 0, 0, 0, ? ? ? ? ? ? ? ? 1, 1, 1, 0, ? ? ? ? ? ? ? ? 0, 1, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 }, ? ? ? ? ? ? ? { 0, 1, 0, 0, ? ? ? ? ? ? ? ? 0, 1, 1, 0, ? ? ? ? ? ? ? ? 0, 1, 0, 0, ? ? ? ? ? ? ? ? 0, 0, 0, 0 } } }; ? ? private int type; ? ? private int turnState; ? ? private int x, y;// 當(dāng)前塊的位置---左上角的坐標(biāo) ? ? private int score = 0; ? ? TimerListener listener1 = new TimerListener(); ? ?//監(jiān)聽(tīng)器 ? ? Timer timer = new Timer(1000, listener1); ?//定時(shí)器 ? ? public TetrisPanel() { ? ? ? ? newGame(); ? ? ? ? nextBlock(); ? ? ? ? timer.start(); ? ? } ? ? void newGame() { ? ? ? ? // 初始化游戲地圖 ? ? ? ? for (int i = 0; i < 12; i++) { ?//列 ? ? ? ? ? ? for (int j = 0; j < 21; j++) { ?//行 ? ? ? ? ? ? ? ? if (i == 0 || i == 11) {// 邊框 ? ? ? ? ? ? ? ? ? ? map[i][j] = 1; ?//透明度 ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? map[i][j] = 0; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? ? ? map[i][21] = 1; ? ? ? ? } ? ? ? ? score = 0; ? ? } ? ? void nextBlock() { ? ? ? ? type = (int) (Math.random() * 1000) % 7; // 總共七種類(lèi)型 ? ? ? ? turnState = (int) (Math.random() * 1000) % 4; // 總共四種轉(zhuǎn)換方法 ? ? ? ? x = 3; ? //起始下落坐標(biāo) ? ? ? ? y = 0; ? ? ? ? if (crash(x, y, type, turnState) == 0) { ? ? ? ? ? ? timer.stop(); ? ? ? ? ? ? int op = JOptionPane.showConfirmDialog(null, ? ? ? ? ? ? ? ? ? ? "Game Over!...再來(lái)一局嗎?!","提示",JOptionPane.YES_NO_OPTION); ? ? ? ? ? ? if (op == JOptionPane.YES_OPTION) { ? ? ? ? ? ? ? ? newGame(); ? ? ? ? ? ? ? ? listener1 = new TimerListener(); ? ? ? ? ? ? ? ? Timer timer = new Timer(1000, listener1); ? ? ? ? ? ? ? ? timer.start(); ? ? ? ? ? ? } else if (op == JOptionPane.NO_OPTION) { ? ? ? ? ? ? ? ? System.exit(0); ? ? ? ? ? ? } ? ? ? ? } ? ? } ? ? void down() { ? ? ? ? if (crash(x, y + 1, type, turnState) == 0) {// 判斷當(dāng)前塊往下落一格后是否和地圖存在填充塊完全重合---注意實(shí)參:y+1 ? ? ? ? ? ? add(x, y, type, turnState);// 把該塊加到地圖---形成堆積塊 ? ? ? ? ? ? nextBlock(); ? ? ? ? } else { ? ? ? ? ? ? y++; ? ? ? ? } ? ? ? ? repaint(); ? ?//刷新頁(yè)面 ? ? } ? ? void left() { ? ? ? ? if (x >= 0) { ? ? ? ? ? ? x -= crash(x - 1, y, type, turnState); ? ? ? ? } ? ? ? ? repaint(); ? ? } ? ? void right() { ? ? ? ? if (x < 8) { ? ? ? ? ? ? x += crash(x + 1, y, type, turnState); ? ? ? ? } ? ? ? ? repaint(); ? ? } ? ? void turn() { ? ? ? ? if (crash(x, y, type, (turnState + 1) % 4) == 1) { ? ? ? ? ? ? turnState = (turnState + 1) % 4; ? ? ? ? } ? ? ? ? repaint(); ? ? } ? ? // 讓一個(gè)塊堆積,其實(shí)是把當(dāng)前塊中的填充塊信息記錄到map[][]中 ? ? private void add(int x, int y, int type, int turnState) { ? ? ? ? for (int a = 0; a < 4; a++) { ? ? ? ? ? ? for (int b = 0; b < 4; b++) { ? ? ? ? ? ? ? ? if (shapes[type][turnState][a * 4 + b] == 1) { ? ? ? ? ? ? ? ? ? ? map[x + b + 1][y + a] = 1; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? tryDelLine(); ? ? } ? ? // 消塊 ? ? private void tryDelLine() { ? ? ? ? // 從上往下,一行行依次遍歷,如果某一行的map[i][j]值全是1,則把這一行消掉---上一行往下落 ? ? ? ? for (int b = 0; b < 21; b++) { ? ? ? ? ? ? int c = 1; ? ? ? ? ? ? for (int a = 0; a < 12; a++) { ? ? ? ? ? ? ? ? c &= map[a][b]; ? ? ? ? ? ? } ? ? ? ? ? ? if (c == 1) {// 全是1--下落一行 ? ? ? ? ? ? ? ? score += 10; ? ? ? ? ? ? ? ? for (int d = b; d > 0; d--) { ? ? ? ? ? ? ? ? ? ? for (int e = 0; e < 11; e++) { ? ? ? ? ? ? ? ? ? ? ? ? map[e][d] = map[e][d - 1]; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? } ? ? } ? ? private int crash(int x, int y, int blockType, int turnState) { ? ? ? ? for (int a = 0; a < 4; a++) { ? ? ? ? ? ? for (int b = 0; b < 4; b++) { ? ? ? ? ? ? ? ? if ((shapes[blockType][turnState][a * 4 + b] & map[x + b + 1][y + a]) == 1) {// 和填充塊或框架重合,都算碰撞 ? ? ? ? ? ? ? ? ? ? return 0; // 碰撞了---方塊的填充塊和地圖中的填充塊完全重合 ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? return 1;// 沒(méi)有碰撞 ? ? } ? ? // 表現(xiàn)層 ? ? @Override ? ? public void paint(Graphics g) { ? ? ? ? super.paint(g);// 清除殘影 ? ? ? ? // 畫(huà)當(dāng)前塊 ? ? ? ? for (int j = 0; j < 16; j++) { ? ? ? ? ? ? if (shapes[type][turnState][j] == 1) { ? ? ? ? ? ? ? ? g.setColor(Color.green); ? ? ? ? ? ? ? ? g.fillRect((j % 4 + x + 1) * 30, (j / 4 + y) * 30, 30, 30); ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? // 畫(huà)地圖(整個(gè)游戲的方塊區(qū)和邊框) ? ? ? ? for (int i = 0; i < 12; i++) { ? ? ? ? ? ? for (int j = 0; j < 22; j++) { ? ? ? ? ? ? ? ? if (map[i][j] == 1) { ? ? ? ? ? ? ? ? ? ? g.setColor(Color.black); ? ?//邊框,墻體 ? ? ? ? ? ? ? ? ? ? g.fillRect(i * 30, j * 30, 30, 30);// 填充 ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? // 顯示分?jǐn)?shù),同時(shí)為版面美觀,在界面上再加點(diǎn)東西 ? ? ? ? // 畫(huà)方塊區(qū)右側(cè)部分 ? ? ? ? g.setColor(Color.blue); ? ? ? ? g.setFont(new Font("aa", Font.BOLD, 26)); ? ? ? ? g.drawString("score : " + score, 395, 100); ? ? ? ? //畫(huà)游戲區(qū)的線(xiàn)格 ? ? ? ? for (int i = 1; i < 11; i++) { ? ? ? ? ? ? for (int j = 0; j < 21; j++) { ? ? ? ? ? ? ? ? g.setColor(Color.CYAN); ? ? ? ? ? ? ? ? g.drawRect(i * 30, j * 30, 30, 30); ? ? ? ? ? ? } ? ? ? ? } ? ? } ? ? class TimerListener extends KeyAdapter implements ActionListener { ? ? ? ? @Override ? ? ? ? public void keyPressed(KeyEvent e) { ? ? ? ? ? ? switch (e.getKeyCode()) { ? ? ? ? ? ? ? ? case KeyEvent.VK_DOWN: ? ? ? ? ? ? ? ? case KeyEvent.VK_S: ? ? ? ? ? ? ? ? ? ? down(); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case KeyEvent.VK_LEFT: ? ? ? ? ? ? ? ? case KeyEvent.VK_A: ? ? ? ? ? ? ? ? ? ? left(); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case KeyEvent.VK_RIGHT: ? ? ? ? ? ? ? ? case KeyEvent.VK_D: ? ? ? ? ? ? ? ? ? ? right(); ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? case KeyEvent.VK_UP: ? ? ? ? ? ? ? ? case KeyEvent.VK_W: ? ? ? ? ? ? ? ? ? ? turn(); ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? @Override ? ? ? ? public void actionPerformed(ActionEvent e) { ? ? ? ? ? ? down(); ? ? ? ? } ? ? } }
public class Tetris extends JFrame { ? ? static JButton button1 = new JButton("重來(lái)"); ? ? static JButton button2 = new JButton("暫停"); ? ? static JButton button3 = new JButton("退出"); ? ? static int flag = 0; ? ? Tetris(){ ? ? ? ? setTitle("俄羅斯方塊"); ? ? ? ? setVisible(true); ? ? ? ? setLocation(450, 100); ? ? ? ? setDefaultCloseOperation(EXIT_ON_CLOSE); ? ? ? ? setSize(550, 697); ? ? ? ? setResizable(false); ? ? ? ? setFocusable(true); ?//表明此 Component 是否可以獲得焦點(diǎn) ? ? } ? ? public static void main(String[] args) { ? ? ? ? Tetris te = new Tetris(); ? ? ? ? TetrisPanel tp = new TetrisPanel(); ? ? ? ? te.add(tp); ? ? ? ? button1.setBounds(390,300,120,40); ? ? ? ? button2.setBounds(390,390,120,40); ? ? ? ? button3.setBounds(390,480,120,40); ? ? ? ? button1.setFocusable(false); ? ? ? ? button2.setFocusable(false); ? ? ? ? tp.add(button1); ? ? ? ? tp.add(button2); ? ? ? ? tp.add(button3); ? ? ? ? tp.setLayout(null); ? ? ? ? te.addKeyListener(tp.listener1); // 讓框架來(lái)監(jiān)聽(tīng)鍵盤(pán) ? ? ? ? button1.addActionListener(e -> { ? ? ? ? ? ? if(e.getSource() == button1){ ? ? ? ? ? ? ? ? tp.timer.stop(); ? ? ? ? ? ? ? ? int a = JOptionPane.showConfirmDialog(null, "確定要重新開(kāi)始嗎?","提示",JOptionPane.YES_NO_OPTION); ? ? ? ? ? ? ? ? if(a == JOptionPane.YES_OPTION){ ? ? ? ? ? ? ? ? ? ? button2.setText("暫停"); ? ? ? ? ? ? ? ? ? ? tp.timer.start(); ? ? ? ? ? ? ? ? ? ? tp.newGame(); ? ? ? ? ? ? ? ? ? ? tp.nextBlock(); ? ? ? ? ? ? ? ? }else if(a == JOptionPane.NO_OPTION){ ? ? ? ? ? ? ? ? ? ? System.exit(0); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? }); ? ? ? ? button2.addActionListener(e -> { ? ? ? ? ? ? if(e.getSource() == button2){ ? ? ? ? ? ? ? ? if(flag == 0){ ? ? ? ? ? ? ? ? ? ? button2.setText("繼續(xù)游戲"); ? ? ? ? ? ? ? ? ? ? tp.timer.stop(); ? ? ? ? ? ? ? ? ? ? flag = 1; ? ? ? ? ? ? ? ? }else if(flag == 1){ ? ? ? ? ? ? ? ? ? ? button2.setText("暫停"); ? ? ? ? ? ? ? ? ? ? tp.timer.start(); ? ? ? ? ? ? ? ? ? ? flag = 0; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? }); ? ? ? ? button3.addActionListener(e -> { ? ? ? ? ? ? if(e.getSource() == button3){ ? ? ? ? ? ? ? ? tp.timer.stop(); ? ? ? ? ? ? ? ? int a = JOptionPane.showConfirmDialog(null,"確定要退出游戲嗎?","退出",JOptionPane.YES_NO_OPTION); ? ? ? ? ? ? ? ? if(a == JOptionPane.YES_OPTION){ ? ? ? ? ? ? ? ? ? ? System.exit(0); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? }); ? ? } }
代碼實(shí)現(xiàn)效果如下:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java 創(chuàng)建動(dòng)態(tài)類(lèi)和查看方法列表信息的實(shí)例
這篇文章主要介紹了 Java 創(chuàng)建動(dòng)態(tài)類(lèi)和查看方法列表信息的實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-06-06SpringBoot通過(guò)源碼探究靜態(tài)資源的映射規(guī)則實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot通過(guò)源碼探究靜態(tài)資源的映射規(guī)則實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05Java內(nèi)存結(jié)構(gòu)和數(shù)據(jù)類(lèi)型
本文重點(diǎn)給大家介紹java內(nèi)存結(jié)構(gòu)和數(shù)據(jù)類(lèi)型知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下2016-12-12SpringDataJpa寫(xiě)原生sql遇到的問(wèn)題及解決
這篇文章主要介紹了SpringDataJpa寫(xiě)原生sql遇到的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11使用chatgpt實(shí)現(xiàn)微信聊天小程序的代碼示例
這篇文章主要介紹了使用chatgpt實(shí)現(xiàn)微信聊天小程序(秒回復(fù)),文中有詳細(xì)的代碼示例,對(duì)大家了解chatgpt聊天有一定的幫助,感興趣的同學(xué)可以參考閱讀2023-05-05IDEA POJO開(kāi)發(fā)神器之Groovy的使用詳解
這篇文章主要介紹了IDEA POJO開(kāi)發(fā)神器之Groovy的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07淺談java中為什么實(shí)體類(lèi)需要實(shí)現(xiàn)序列化
下面小編就為大家?guī)?lái)一篇淺談java中為什么實(shí)體類(lèi)需要實(shí)現(xiàn)序列化。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05