2015-12-16 12 views
6

Tôi có một tình huống mà tôi muốn xác định nhiều hành vi khác nhau cho các trường của mình.java: cách tự động tạo phương thức tùy chỉnh cho biến số

class SomePage { 
    //... 

    @FindBy(id = "selectEthinicity") 
    private WebElement ethinicitySelect; 

    @FindBy(id = "someId") 
    private WebElement usernameInputField; 

    @FindBy(id = "buttonSubmit") 
    private WebElement submitButton; 


    public void selectEthnicity(String param) throws Exception { 
     new Select(ethnicitySelect).selectByVisibleText(param); 
    } 

    public void selectEthnicityByIndex(String param) throws Exception { 
     new Select(ethnicitySelect).selectByIndex(Integer.parseInt(param)); 
    } 

    public int getSelectEthinicityNumberOfOptions() { 
     new Select(ethnicitySelect).getOptions().size();  
    } 

    public void waitForOptionOfSelectEthnicityToLoad() { 
     //logic to wait for an options of Ethinicity to load 
    } 

    public void selectEthnicity_Wait(String param) throws Exception { 
     //wait 
     //select Ethinicity 
    } 

    public void selectEthnicityByIndex_Wait(String param) throws Exception { 
     //wait and 
     //Select Ethnicity by einde 
    } 


    //custom method for input Field 
    public String getUsernameInputFieldValue() { 
     usernameInputField.getAttribute("value"); 
    } 

    public void enterUsernameInputField(String param) { 
     usernameInputField.sendKeys(param); 
    } 


    //custom method for button 
    public void clickSubmitButton() throws PageValidationException { 
     submitButton.click(); 
    } 

    //... 
} 

Ở đây tôi có một lớp SomePage là đối tượng trang (Sử dụng mẫu nhà máy trang) bao gồm các trường (WebElement).

Dựa trên hậu tố của tên trường tôi cần tạo số phương thức. Nếu hậu tố là *Select trường sẽ có số phương thức có thể tương tự cho tất cả select field. Nếu hậu tố là *Button, nó sẽ có phương thức cần thiết cho button field.

Tôi có thể tạo Phương thức tùy chỉnh dựa trên suffix of field names hay không.

LƯU Ý: IntelliJ Hỗ trợ sửa đổi Getters and Setters tùy chỉnh nhưng không cho phép nhiều phương thức cho mỗi trường. Nó giới hạn thành 1 Getter và 1 Setter trên mỗi trường. Mà không phải lúc nào cũng đúng như ví dụ. Tôi có nhiều setter (loại setter) hoặc getter cho một lĩnh vực.

+0

Bạn có thể muốn có một cái nhìn tại [Project Lombok] (https://projectlombok.org/index.html) –

+0

Và propably AOP. –

+0

Có lý do nào khiến bạn không thể tạo Radio/Button lớp có các chức năng được xác định không? Bạn thậm chí có thể làm một siêu lớp và mở rộng nó, và sau đó tất cả các bạn muốn sử dụng trong lớp Temp sẽ là getters và setters cho nút/radio riêng lẻ và sau đó gọi phương thức getter/setter của nó. – Compass

Trả lời

0

Tạo Getters and Setters trong IntelliJ IDEA:

  1. Trên menu chính, chọn Mã. Cách khác, nhấp chuột phải vào trình chỉnh sửa và chọn Tạo trên menu ngữ cảnh hoặc sử dụng phím tắt Alt + Insert.
  2. Trong danh sách bật lên được hiển thị trong trình chỉnh sửa, chọn một trong các tùy chọn sau: Getter Phương thức truy cập để nhận giá trị hiện tại của các trường đã chọn. Setter Phương pháp trình kích hoạt để thiết lập các giá trị được chỉ định cho các trường đã chọn. Getter và Setter Cả hai phương pháp cho các trường được chọn.
  3. Trong hộp thoại Chọn trường để tạo Getters and Setters, hãy chọn trường mong muốn. Bạn có thể thêm setter tùy chỉnh hoặc getter bằng cách nhấp vào browseButton và truy cập hộp thoại Getter/Setter Templates. Nếu getters và setters cho một trường đã tồn tại, trường này không có trong danh sách.
  4. Nhấp vào OK.
    Để biết thêm thông đi đến link
+0

Getter và Setter chỉ cung cấp cho getter đồng bằng và setter .. Tôi cần phải làm một số chất liệu khác trên biến đó .. Cố gắng getter tùy chỉnh và setter .. Tôi không thể thêm nhiều hơn một getter/setter –

+0

@AmanTuladhar ý của bạn là gì: Tôi không thể thêm nhiều hơn một getter/setter – Abdelhak

+0

ví dụ tôi có một biến x .. nếu tôi tự động tạo ra getter và setter tôi có thể có một getter cho x và một setter hoặc x .. nhưng nhìn vào ví dụ của tôi tôi có nhiều phương pháp cho một biến .. không chỉ getter và setter .. Tôi cần những người được tự động tạo ra quá .. –

0

Nó có thể tạo ra các lớp học tùy chỉnh, nhưng thế hệ lớp năng động là một tính năng khá tiên tiến, và từ những âm thanh của vấn đề của bạn đó là không cần thiết phức tạp.

Tôi nghĩ bạn nên tạo một lớp mới cho các đối tượng này có cùng chức năng. Bạn nên đọc về lập trình hướng đối tượng vì đây là một khái niệm khá đơn giản. Có lẽ ví dụ của bạn là kém, nhưng tại sao bạn định nghĩa lại các hàm String cho mỗi nút? Dưới đây là ví dụ về một thiết kế khác:

public class Button { 
    private String text; 

    public Button(String text) { 
     this.text = text; 
    } 

    public void setText(String text) { 
     this.text = text; 
    } 

    public String getText() { 
     return text; 
    } 
} 

Sau đó, chỉ cần khai báo một loạt lớp học mới của bạn.

class Temp { 
    Button abcButton = new Button("abc"); 
    Button cdeButton = new Button("cde"); 

     // Instead of setAbcButtonToLower() 
     abcButton.setText(abcButton.getText().toLowerCase()); 
     // Instead of getAbcButtonIndexOfChar() 
     abcButton.getText().indexOf(c); 
     // Instead of getAbcButtonSize() 
     abcButton.getText().length(); 
} 
+0

Mã mà tôi đã thêm ở đó chỉ là một mã ví dụ ... Tôi không thực sự thực hiện những hành động trên Chuỗi .... Tôi chỉ muốn cho bạn thấy những gì tôi cần một cách đơn giản .. Bạn có thể vui lòng xem lại câu hỏi của tôi một lần nữa bỏ qua rằng biến của tôi như là một String .. Tôi chỉ muốn một phương pháp tùy chỉnh để mô tả hành vi cho những biến –

+0

Tôi nghĩ rằng câu trả lời của tôi vẫn áp dụng. Tạo một lớp với tất cả các hoạt động phổ biến của bạn được xác định trong nó. – Samuel

+0

Sử dụng các lớp cha và lớp con sẽ là cách tiếp cận của tôi cho phương thức này, chứ không phải các phương thức được thiết kế riêng cho từng đối tượng. Nếu mọi đối tượng sử dụng cùng một phương thức chính xác, thì các phương thức đó sẽ được áp dụng ở cấp đối tượng. – Compass

-4

Bạn không thể tạo phương thức tùy chỉnh tự động. Đối với các phương thức tùy chỉnh, bạn phải xác định chúng là lý do tại sao nó được gọi là tùy chỉnh. tốt nhất mà bạn có thể nhận được nhiều phương pháp getter và setter chỉ cơ bản, tôi nghĩ bạn đã có những
hoặc bạn có thể làm điều đó như lớp Button { nút chuỗi } này

buttonProperties lớp {

int buttonLength; int buttonSize;

public int getbuttonSize() {

return buttonSize; 

} . . .

}

+0

Điều đó cực kỳ sai. Lombok công cụ mã cho phù hợp. –

Các vấn đề liên quan