มีวิธีสร้าง getters และ setters ใน Eclipse โดยอัตโนมัติหรือไม่?


256

ฉันกำลังทำงานในAndroidโครงการใหม่( Java) และสร้างวัตถุที่มีตัวแปรจำนวนมาก เนื่องจากฉันวางแผนที่จะเพิ่มตัวตั้งค่าและตัวตั้งค่าสำหรับพวกเขาทั้งหมดฉันจึงสงสัยว่า: มีทางลัดในEclipseการสร้างตัวตั้งค่าและตัวตั้งค่าในชั้นเรียนที่กำหนดหรือไม่


1
เสียงเหมือน stalker สำหรับฉัน ... ฉันเพิ่งทำโปรแกรม Java ทั้งหมดโดยไม่มี IDE ดังนั้นการใช้ Eclipse ยังค่อนข้างใหม่สำหรับฉัน
Phil

3
@krio - ทั้งโลกไม่ได้ใช้ Eclipse สำหรับ Java dev ฉันทำงานส่วนใหญ่ใน IntelliJ และพบว่าตัวเองถามคำถามมากมายเช่นนี้เมื่อฉันเริ่มทำงานใน Eclipse
vcsjones

1
@Phil, vcsjones - ขอโทษจริง ๆ แต่ลองดูนี่ - google.com.au/… - ฉันเดาว่า stackoverflow บอกว่าการวิจัยสำคัญมาก
TeaCupApp

2
มันเป็นวิธีที่เร็วที่สุด: ctrl + 3 ggas
dellasavia

1
@ Konstantin ที่เพิ่งบอกว่าจะหลีกเลี่ยงการใช้พวกมันในคลาสเดียวกันดังนั้นอย่าโทรหาthis.getCount()เมื่อคุณสามารถอ้างอิงthis.mCountได้ แม้ว่ามันอาจเป็นการดำเนินการที่มีราคาแพงกว่า แต่ก็เป็นวิธีที่สะอาดกว่าเพื่อให้สามารถเข้าถึงตัวแปรของวัตถุอื่น ๆ ผ่านทาง getters และ setters
ฟิล

คำตอบ:


357

เปิดเมนูบริบท (เช่นคลิกขวา) ในหน้าต่างซอร์สโค้ดของคลาสที่ต้องการ จากนั้นเลือกSourceเมนูย่อย จากการเลือกเมนูGenerate Getters and Setters...นั้นจะทำให้หน้าต่างตัวช่วยสร้างปรากฏขึ้น

Source -> Generate Getters and Setters...

เลือกตัวแปรที่คุณต้องการสร้าง getters และ setters OKและคลิก


มี 'สร้างความคิดเห็นองค์ประกอบ' เท่านั้นไม่มีตัวรับและตัวตั้งค่า ฉันใช้ Eclipse 4.4.0 ติดตั้งปลั๊กอิน PDT แล้ว ในขณะเดียวกันนี้สามารถนำมาใช้ - mikeangstadt.name/projects/getter-setter-gen
Xdg

ใช้งานได้ดีกับ Eclipse Mars.2 Release (4.5.2) ขอบคุณ
this.user3272243

ขอบคุณที่ช่วยฉันเกี่ยวกับความน่าเบื่อเป็นล้านปี!
Jay Edwards

11
นอกจากนี้คุณยังสามารถเข้าถึงเมนูย่อยนี้กับแป้นพิมพ์ลัดSHIFT+ ALT+ Sและจากนั้นเปิดสร้าง Getters และ Setters Rตัวเลือกโดยการกด
Rosa

ขำขันว่าคำตอบของฉันที่นี่ได้รับความนิยมมาก แต่วันนี้ฉันจะใช้ลอมบอกตามที่คนอื่น ๆ ระบุไว้ด้านล่าง
Hagai Cibulski

70

ใน Eclipse Juno โดยค่าเริ่มต้นALT + SHIFT + S, R จะเปิดกล่องโต้ตอบ getter / setter หมายเหตุคุณต้องกดทั้ง 4 ปุ่ม


5
คุณสามารถออกจากส่วน SHIFT และทำ ALT + S, R ได้เช่นกัน
Jason Wheeler

2
คุณไม่สามารถออกไปSHIFTใน Eclipse Kepler
yellavon

คุณสามารถออกไปSHIFTใน Eclipse Oxygen
Jake Reece

คุณไม่สามารถออกไปSHIFTใน Eclipse 2018-12
Neph


41

คำตอบอื่น ๆ ทั้งหมดเป็นเพียงการมุ่งเน้นไปที่ระดับ IDE เหล่านี้ไม่ใช่วิธีที่มีประสิทธิภาพและสวยงามที่สุดในการสร้างผู้ได้รับและผู้ตั้งค่า หากคุณมีคุณสมบัติหลายสิบวิธี getters และ setters ที่เกี่ยวข้องจะทำให้โค้ดคลาสของคุณละเอียดมาก

วิธีที่ดีที่สุดที่ฉันเคยสร้าง getters และ setters โดยอัตโนมัติคือการใช้คำอธิบายประกอบ lombok ในโครงการ java ของคุณ lombok.jar จะสร้างวิธี getter และ setter เมื่อคุณรวบรวมรหัส java

คุณเพียงแค่มุ่งเน้นไปที่การตั้งชื่อแอตทริบิวต์และตัวแปรคลาสและคำจำกัดความของ lombok จะดำเนินการต่อ ง่ายต่อการบำรุงรักษารหัสของคุณ

ตัวอย่างเช่นหากคุณต้องการเพิ่มเมธอด getter และ setter สำหรับageตัวแปรคุณเพียงเพิ่มคำอธิบายประกอบ lombok สองรายการ:

@Getter @Setter 
public int age = 10;

นี่เท่ากับโค้ดดังนี้:

private int age = 10;
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}

คุณสามารถค้นหารายละเอียดเพิ่มเติมเกี่ยวกับลอมบ็อกได้ที่นี่: โครงการลอมบอก


1
แค่นั้นแหละ! ขอบคุณมาก! ที่จริงแล้วคำตอบของคุณควรอยู่ด้านบนเนื่องจาก lombok เป็นทางออกเดียวที่แท้จริงเพื่อหลีกเลี่ยงการเห็นโค้ด Java สำเร็จรูปทั้งหมดจะต้องสร้างหรือเขียน ขอบคุณ!
Stefan Endrullis

2
โครงการลอมบอก (หรืออย่างน้อยก็ความคิด) ควรเป็นส่วนหนึ่งของ Java 11 ฉันใช้ Kotlin สำหรับชั้นเรียน Pojo เท่านั้นที่จะหลบหนีการตั้งค่ารุ่น getter: /
Wolf359

31

วิธีสร้าง Getters & Setters -

1) กด Alt+ Shift+ Sจากนั้นR
2) คลิกขวา -> Source -> สร้าง Getters & Setters
3) ไปที่เมนู Source -> สร้าง Getters & Setters
4) ไปที่เมนู Windows -> Preferences -> General -> Keys (Write Generate Getters & Setters ในช่องข้อความ)
5) คลิกที่หลอดข้อผิดพลาดของสนาม -> สร้าง getters & setters ...
6) กด Ctrl+3และเขียน getters & setters ในช่องข้อความจากนั้นเลือกตัวเลือกสร้าง Getters & Setters

หากMac OSกด Alt + cmd + S จากนั้นเลือก Getters & Setters


2
ฉันคิดว่า 1 วิธีนี้ง่ายกว่านิดหน่อย: 1) กด Alt + Shift + S จากนั้น R
Paco Abato

1
กด Ctrl-3 แล้วพิมพ์ "getter" โดยตรงหลังจากหายไปจากรายการ จดจำได้ง่ายกว่าช็อตคัทที่เฉพาะเจาะจงเช่นนี้ใช้ได้กับทุกคำสั่งดูและอื่น ๆ
Bananeweizen

@ Bananeweizen - ขอบคุณ
Deepak Gupta

11

คลิกขวา -> สร้าง getters และ setters ทำงานได้ดี แต่ถ้าคุณต้องการสร้างแป้นพิมพ์ลัดใน eclipse ใน windows คุณสามารถทำตามขั้นตอนต่อไปนี้:

  1. ไปที่หน้าต่าง> การตั้งค่า
  2. ไปที่ทั่วไป> กุญแจ
  3. รายการสำหรับ "Quick Assist - สร้าง getter / setter สำหรับฟิลด์"
  4. ในฟิลด์ข้อความ "การผูก" ด้านล่างกดปุ่มที่ต้องการ (ในกรณีของฉันฉันใช้ ALT + SHIFT + G)
  5. กดใช้และตกลง
  6. ในเอดิเตอร์ Java ของคุณให้เลือกฟิลด์ที่คุณต้องการสร้างเมธอด getter / setter สำหรับและกดทางลัดที่คุณตั้งค่าในขั้นตอนที่ 4 กด ok ในหน้าต่างนี้เพื่อสร้างวิธี

หวังว่านี่จะช่วยได้!


9

แน่ใจ

ใช้สร้าง Getters และ Setters จากเมนูแหล่งที่มาหรือเมนูบริบทในฟิลด์หรือประเภทที่เลือกหรือการเลือกข้อความในประเภทเพื่อเปิดกล่องโต้ตอบ ไดอะล็อกสร้าง Getters และ Setters จะแสดง getters และ setters สำหรับฟิลด์ทั้งหมดของประเภทที่เลือก วิธีการจะถูกจัดกลุ่มตามเขตข้อมูลของประเภท

ดูเอกสารช่วยเหลือสำหรับข้อมูลเพิ่มเติม


8

ใช่. คลิกขวาที่รหัสและคุณจะเห็นเมนูปรากฏขึ้น มี "แหล่งที่มา", "สร้างตัวรับและตัวตั้งค่า" และถัดจากนั้นคุณสามารถเห็นทางลัดซึ่งคือ Alt + Shift + S และ R ในระบบของฉัน

ในทำนองเดียวกันคุณสามารถนำทางไปยังเมนูย่อยอื่น ๆ ในเมนูหลักนั้นโดยการพิมพ์ทางลัดที่เหมาะสมคุณจะไปที่เมนูย่อยโดยตรงแทนที่จะเป็นเมนูบริบทหลักจากนั้นคุณสามารถเลือกจากเมนูหรือพิมพ์ตัวอักษรอื่นเพื่อเลือกจากรายการ



7

ฉันชอบที่จะสร้างสนามส่วนตัวก่อน

private String field;

Eclipse จะเน้นตัวแปรโดยอัตโนมัติโดยวางเคอร์เซอร์ไว้เหนือตัวแปรใหม่ของคุณกด Ctrl + 1 จากนั้นจะให้เมนูสร้าง Create getter และ setter

ฉันกด Ctrl + 1 เพราะมันฉลาดกว่าที่ฉันคิดว่าคุณต้องการต่อไป



5
  • สำหรับตัวแปร ALT + SHIFT + S ทั้งหมดแล้ว R และสำหรับเลือกทั้งหมดกด ALT + A

  • สำหรับเคอร์เซอร์จุดเดียวตัวแปรที่ตัวแปรแล้วกด CTRL + 1 และไปที่ตัวเลือกที่สองจากคำแนะนำ

ภาพหน้าจอ


ขอบคุณนี่คือสิ่งที่ฉันกำลังมองหา
Shams Nahid

4

มีโอเพ่นซอร์ส jar ที่รู้ว่าเหมือนลอมบอกคุณเพียงแค่เพิ่ม jar จากนั้นใส่คำอธิบายประกอบ POJO ของคุณด้วย@Getter & @Setterซึ่งจะสร้าง getters และ setters โดยอัตโนมัติ

นอกเหนือจากนี้เราสามารถใช้คุณสมบัติอื่น ๆ เช่น@ToString , @EqualsAndHashCodeและสิ่งดีๆอื่น ๆ ที่จะลบรหัสวานิลลาออกจากแอปพลิเคชันของคุณ



3

** ใน Eclipse Ide

สำหรับการสร้างทั้ง setters และ getters -> alt + shift + s + r จากนั้น Alt A จากนั้นคลิกที่ ok;

สำหรับการสร้างเพียง getters -> alt + shift + s + r แล้วกด g จากนั้นคลิกที่ปุ่มตกลง;

สำหรับสร้าง setters เท่านั้น -> alt + shift + s + r แล้วกด l จากนั้นคลิกที่ปุ่ม ok; **


2

คลิกขวาที่คุณสมบัติที่คุณต้องการสร้างตัวเรียกและตัวตั้งค่าและเลือก

Source -> Generate Getters and Setters...

2

1) ไปที่Windows-> Preferences-> General-> Keys

2) เลือกcommand" สร้าง Getters และ Setters "

3) ในBinding, กดทางลัดที่จะชอบที่จะใช้ (เช่นAlt + Shift + G )

4) คลิกสมัครและคุณพร้อมที่จะไป


1
  1. เปิดไฟล์คลาสใน Eclipse
  2. ดับเบิลคลิกที่ชื่อคลาสหรือไฮไลต์
  3. จากนั้นไปที่ซอร์ส -> ใส่รหัส
  4. คลิกที่ Getter และ Setter

มันเปิดป๊อปอัพเพื่อเลือกเขตข้อมูลที่วิธีการ getter / setter ที่จะสร้าง เลือกเขตข้อมูลและคลิกที่ปุ่ม "สร้าง" ป้อนคำอธิบายรูปภาพที่นี่ป้อนคำอธิบายรูปภาพที่นี่


1

ใช้โครงการลอมบอกหรือดีกว่า Kotlin สำหรับ Pojos ของคุณ

(นอกจากนี้หากต้องการเพิ่ม Kotlin ในประวัติการทำงานของคุณ;)

นี้ :

public class BaseVO {
    protected Long id;

    @Override
    public boolean equals(Object obj) {
        if (obj == null || id == null)
            return false;

        if (obj instanceof BaseVO)
            return ((BaseVO) obj).getId().equals(id);

        return false; 
    }

    @Override
    public int hashCode() {
        return id == null ? null : id.hashCode();
    }
    // getter setter here
}

public class Subclass extends BaseVO {
    protected String name;
    protected String category;
    // getter setter here
}

จะกลายเป็นสิ่งนี้:

open class BaseVO(var id: Long? = null) {

    override fun hashCode(): Int {
        if (id != null)
            return id.hashCode()

        return super.hashCode()
    }

    override fun equals(other: Any?): Boolean {
        if (id == null || other == null || other !is BaseVO)
            return false

        return id.hashCode() == other.id?.hashCode()
    }
}

@Suppress("unused")
class Subclass(
        var name: String? = null,
        var category: String? = null
) : BaseVO()

หรือใช้คลาส "data" ของ Kotlin คุณต้องเขียนโค้ดให้น้อยลง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.