2011-05-01 3 views
-1

netbeans에서 만든 프로젝트가 있는데, 컴파일 할 때 클래스 파일을 만들었습니다. 하지만 컴파일 후에 operator.java라는 파일이 있으면 operator.class, $ 1.class 연산자, $ 2.class 연산자 등이 있습니다. 특별한 이유가 있습니까? 왜 그런지 설명해 주시겠습니까?Netbeans는 컴파일시에 의문이 생깁니다.

package admin; 
import forms_helper.global_variables; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import utilities.mysql_query; 
import utilities.variables; 
public class stock_adjust extends javax.swing.JFrame {` 

    List<String> list = new ArrayList<String>(); 
    List<String> list_id = new ArrayList<String>(); 
    List<String> list_quantity = new ArrayList<String>(); 

    /** Creates new form stock_adjust */ 
    public stock_adjust() { 
     initComponents(); 
    } 

    /** This method is called from within the constructor to 
    * initialize the form. 
    * WARNING: Do NOT modify this code. The content of this method is 
    * always regenerated by the Form Editor. 
    */ 
    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code">       
    private void initComponents() { 

     jLabel1 = new javax.swing.JLabel(); 
     jTextField1 = new javax.swing.JTextField(); 
     jScrollPane1 = new javax.swing.JScrollPane(); 
     products = new javax.swing.JList(); 
     jLayeredPane1 = new javax.swing.JLayeredPane(); 
     jLabel2 = new javax.swing.JLabel(); 
     product_name = new javax.swing.JTextField(); 
     qty = new javax.swing.JTextField(); 
     jLabel4 = new javax.swing.JLabel(); 
     cancel = new javax.swing.JButton(); 
     save = new javax.swing.JButton(); 
     jButton3 = new javax.swing.JButton(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); 
     setTitle("Stock Adjust"); 
     setLocationByPlatform(true); 
     setResizable(false); 

     jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); 
     jLabel1.setText("Search:"); 

     jTextField1.addCaretListener(new javax.swing.event.CaretListener() { 
      public void caretUpdate(javax.swing.event.CaretEvent evt) { 
       jTextField1CaretUpdate(evt); 
      } 
     }); 

     products.addMouseListener(new java.awt.event.MouseAdapter() { 
      public void mouseClicked(java.awt.event.MouseEvent evt) { 
       productsMouseClicked(evt); 
      } 
     }); 
     products.addListSelectionListener(new javax.swing.event.ListSelectionListener() { 
      public void valueChanged(javax.swing.event.ListSelectionEvent evt) { 
       productsValueChanged(evt); 
      } 
     }); 
     jScrollPane1.setViewportView(products); 

     jLayeredPane1.setBorder(javax.swing.BorderFactory.createTitledBorder("Adjust")); 

     jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); 
     jLabel2.setText("Product Name:"); 
     jLabel2.setBounds(10, 30, 80, 20); 
     jLayeredPane1.add(jLabel2, javax.swing.JLayeredPane.DEFAULT_LAYER); 
     product_name.setBounds(100, 30, 240, -1); 
     jLayeredPane1.add(product_name, javax.swing.JLayeredPane.DEFAULT_LAYER); 
     qty.setBounds(100, 60, 110, -1); 
     jLayeredPane1.add(qty, javax.swing.JLayeredPane.DEFAULT_LAYER); 

     jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); 
     jLabel4.setText("Quantity:"); 
     jLabel4.setBounds(10, 60, 80, 20); 
     jLayeredPane1.add(jLabel4, javax.swing.JLayeredPane.DEFAULT_LAYER); 

     cancel.setText("Cancel"); 
     cancel.setBounds(220, 110, -1, 30); 
     jLayeredPane1.add(cancel, javax.swing.JLayeredPane.DEFAULT_LAYER); 

     save.setText("Save"); 
     save.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       saveActionPerformed(evt); 
      } 
     }); 
     save.setBounds(50, 110, 73, 30); 
     jLayeredPane1.add(save, javax.swing.JLayeredPane.DEFAULT_LAYER); 

     jButton3.setText("Keyboard"); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addContainerGap() 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) 
        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() 
         .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 51, javax.swing.GroupLayout.PREFERRED_SIZE) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 212, javax.swing.GroupLayout.PREFERRED_SIZE) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
         .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 99, javax.swing.GroupLayout.PREFERRED_SIZE)) 
        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() 
         .addGap(16, 16, 16) 
         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
          .addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 356, Short.MAX_VALUE) 
          .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 356, javax.swing.GroupLayout.PREFERRED_SIZE)))) 
       .addGap(18, 18, 18)) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addGap(24, 24, 24) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 23, Short.MAX_VALUE) 
        .addComponent(jButton3)) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
       .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addGap(18, 18, 18) 
       .addComponent(jLayeredPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 169, javax.swing.GroupLayout.PREFERRED_SIZE) 
       .addGap(19, 19, 19)) 
     ); 

     pack(); 
    }// </editor-fold>       

    private void jTextField1CaretUpdate(javax.swing.event.CaretEvent evt) {           
     try { 
      String sql = "SELECT * FROM pos_products WHERE " 
        + "company_id='" + global_variables.company_id + "' AND " 
        + "shop_type='" + global_variables.shop_type + "' AND " 
        + "product_name LIKE '%" + jTextField1.getText() + "%' OR " 
        + "barcode LIKE '%" + jTextField1.getText() + "%'"; 

      list.removeAll(list); 
      list_id.removeAll(list_id); 
      list_quantity.removeAll(list_quantity); 
      ResultSet rs = mysql_query.execute_mysql(variables.con.conn, sql); 
      products.removeAll(); 
      while (rs.next()) { 
       list.add(rs.getString("product_name")); 
       list_id.add(rs.getString("p_id")); 
       list_quantity.add(rs.getString("available_stock")); 
      } 
      products.setListData(list.toArray(new String[list.size()])); 
     } catch (SQLException ex) { 
      Logger.getLogger(stock_adjust.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    }          

    private void productsValueChanged(javax.swing.event.ListSelectionEvent evt) {          
    }          

    private void productsMouseClicked(java.awt.event.MouseEvent evt) {          
     product_name.setText(list.get(products.getSelectedIndex())); 
     qty.setText(list_quantity.get(products.getSelectedIndex())); 
    }          

    private void saveActionPerformed(java.awt.event.ActionEvent evt) {          
     String sql = "UPDATE pos_products SET " 
       + "available_stock='" + qty.getText() + "' WHERE " 
       + "company_id='" + global_variables.company_id + "' AND " 
       + "p_id='" + list_id.get(products.getSelectedIndex()) + "'"; 
     mysql_query.update_mysql(variables.con.conn, sql); 
    }          

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String args[]) { 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new stock_adjust().setVisible(true); 
      } 
     }); 
    } 
    // Variables declaration - do not modify      
    private javax.swing.JButton cancel; 
    private javax.swing.JButton jButton3; 
    private javax.swing.JLabel jLabel1; 
    private javax.swing.JLabel jLabel2; 
    private javax.swing.JLabel jLabel4; 
    private javax.swing.JLayeredPane jLayeredPane1; 
    private javax.swing.JScrollPane jScrollPane1; 
    private javax.swing.JTextField jTextField1; 
    private javax.swing.JTextField product_name; 
    private javax.swing.JList products; 
    private javax.swing.JTextField qty; 
    private javax.swing.JButton save; }` 

위의 코드에서 나는 6 클래스를 얻었습니다. 그래서 여러분은이 코드를 작성하는 책임이있는 선을 선택합니다. oz이 코드에서 내부 클래스를 사용하지 않습니다. 나는 Enum 개념에 대해 확신하지 못한다. 당신이 나를 도울 수 있다면 거기서부터 배우기 시작할 수있다. ..

답변

3

이것은 넷빈 전용이 아닙니다.

추가 클래스 파일 operator.java 내에서 선언 익명 클래스 중 하나의 바이트 코드, 또는 operator은 당 인스턴스 메소드 정의를 선언 열거 경우, 다음 그뿐만 아니라 추가적인 gnerated 클래스를 통해 컴파일러에 의해 구현된다.

편집 :

이 익명의 클래스 정의이다 : 당신은 당신의 코드 (등 MoustListener, ActionListener를)에서 그 중 몇 가지가

new javax.swing.event.CaretListener() { 
     public void caretUpdate(javax.swing.event.CaretEvent evt) { 
      jTextField1CaretUpdate(evt); 
     } 
    } 

- 그것은 청취자를 선언하는 일반적인 관용구이야 그런 인라인 구현.

+0

나 한테 더 설명해 줄 수 있어요? ? 내 편집을 확인하십시오 .. – Deepak

+0

@Deepak : 설명을 추가했습니다 –

+0

+1 좋은 물건 특히 EDIT. – Boro

3

연산자 클래스에 내부 클래스 또는 enum이 있으면 컴파일 한 후에 이와 같은 클래스 파일이 추가로 표시된다.


업데이트 :

당신은 청취자 익명 클래스를 사용하고 그들은 모두 이름 운영자 $의 1.calss로 만들어집니다 .. 그래서 당신이 사용하고 있기 때문에이 많은 클래스 파일을 참조 리스너 용 익명 클래스

....... 
products.addMouseListener(new java.awt.event.MouseAdapter() { 
      public void mouseClicked(java.awt.event.MouseEvent evt) { 
       productsMouseClicked(evt); 
      } 
     }); 
products.addListSelectionListener(new javax.swing.event.ListSelectionListener() { 
      public void valueChanged(javax.swing.event.ListSelectionEvent evt) { 
       productsValueChanged(evt); 
      } 
     }); 
....... 
+1

+1 속도, 해리 조이. – duffymo

+0

내 편집자를 확인하십시오 !! 너희들은 항상 빠른 응답, 그 이유는 내가 stackoverflow 사랑 :) – Deepak

+0

죄송합니다 Deepak, 너무 많이 읽을 수 있습니다. – duffymo

1

operator.java에는 내부 클래스가 있어야합니다.

+1

10 초 후에 ........ :-p –

관련 문제