คำถามติดแท็ก static

คงที่เป็นคำที่ใช้ในภาษาการเขียนโปรแกรมบางอย่างเพื่อกำหนดฟังก์ชั่นหรือพื้นที่จัดเก็บข้อมูล (ฟิลด์) ที่ไม่ผูกพันกับอินสแตนซ์ของวัตถุที่เฉพาะเจาะจง ในกรณีส่วนใหญ่แท็กนี้หากใช้ควรใช้ร่วมกับแท็กภาษาการเขียนโปรแกรมเฉพาะ

14
เหตุใดฉันจึงไม่สามารถประกาศวิธีการคงที่ในส่วนต่อประสานได้
หัวข้อบอกว่าส่วนใหญ่ - เหตุผลสำหรับความจริงที่ว่าวิธีการคงที่ไม่สามารถประกาศในอินเตอร์เฟซคืออะไร? public interface ITest { public static String test(); } รหัสด้านบนให้ข้อผิดพลาดต่อไปนี้กับฉัน (ใน Eclipse อย่างน้อย): "ตัวดัดแปลงที่ผิดกฎหมายสำหรับวิธีการเชื่อมต่อ ITest.test (); อนุญาตให้สาธารณะ & นามธรรมเท่านั้น"

7
ความแตกต่างระดับคงที่และปิดผนึก
มีคลาสใดบ้างที่ถูกนำไปใช้ในคลาสแบบสแตติก? วิธีการ: static class ABC : Anyclass มีคลาสใดที่สามารถสืบทอดได้ทั้งในคลาสที่ปิดผนึกและคลาสคงที่? วิธีการ: static class ABC : AClass {} และ sealed class ABC : AClass {} ฉันขอผิดบ้างไหม?
150 c#  .net  oop  static  sealed 

8
Java คงที่วิธีการคงที่: ล็อคในวัตถุหรือชั้นเรียน
เอกสาร Java กล่าวว่า: เป็นไปไม่ได้ที่การเรียกใช้วิธีการซิงโครไนซ์สองครั้งบนวัตถุเดียวกันเพื่อแทรกสอด สิ่งนี้หมายความว่าสำหรับวิธีการคงที่? เนื่องจากวิธีการคงที่ไม่มีวัตถุที่เกี่ยวข้องคำหลักที่ถูกซิงโครไนซ์จะล็อคในชั้นเรียนแทนที่จะเป็นวัตถุหรือไม่

3
การเริ่มต้นสมาชิกแบบคงที่ในเทมเพลตคลาส
ฉันต้องการทำสิ่งนี้: template <typename T> struct S { ... static double something_relevant = 1.5; }; แต่ฉันทำไม่ได้เนื่องจากsomething_relevantไม่ใช่ประเภทที่สมบูรณ์ มันไม่ได้ขึ้นอยู่กับแต่รหัสที่มีอยู่ขึ้นอยู่กับมันเป็นสมาชิกคงที่ของTS เนื่องจาก S เป็นแม่แบบฉันไม่สามารถใส่คำจำกัดความไว้ในไฟล์ที่คอมไพล์ได้ ฉันจะแก้ปัญหานี้ได้อย่างไร
148 c++  templates  static 

12
คลาสแบบคงที่ TypeScript
ฉันต้องการย้ายไป TypeScript จาก JS แบบดั้งเดิมเพราะฉันชอบไวยากรณ์ที่คล้าย C # ปัญหาของฉันคือฉันไม่สามารถหาวิธีประกาศคลาสสแตติกใน TypeScript ใน C # ฉันมักจะใช้คลาสคงที่เพื่อจัดระเบียบตัวแปรและวิธีการรวมเข้าด้วยกันในคลาสที่มีชื่อโดยไม่จำเป็นต้องติดตั้งวัตถุ ในวานิลลา JS ฉันเคยทำสิ่งนี้กับวัตถุ JS อย่างง่าย: var myStaticClass = { property: 10, method: function(){} } ใน TypeScript ฉันอยากจะใช้แนวทาง C-sharpy ของฉัน แต่ดูเหมือนว่าคลาสแบบคงที่ไม่มีอยู่ใน TS วิธีแก้ไขปัญหาที่เหมาะสมสำหรับปัญหานี้คืออะไร?

5
วิธีคงที่ไม่ซิงโครไนซ์เธรดปลอดภัยหรือไม่ถ้าพวกเขาไม่แก้ไขตัวแปรคลาสคงที่
ฉันสงสัยว่าคุณมีวิธีการคงที่ที่ไม่ได้ทำข้อมูลให้ตรงกัน แต่ไม่ได้แก้ไขตัวแปรคงที่ใด ๆ มันเป็นเธรดที่ปลอดภัยหรือไม่ จะเกิดอะไรขึ้นถ้าเมธอดสร้างตัวแปรโลคอลภายในมัน? ตัวอย่างเช่นรหัสต่อไปนี้ปลอดภัยไหม? public static String[] makeStringArray( String a, String b ){ return new String[]{ a, b }; } ดังนั้นถ้าฉันมีสองเธรดเรียกวิธีการอย่างต่อเนื่องและพร้อมกันหนึ่งกับสุนัข (พูดว่า "Great dane" และ "bull dog") และอื่น ๆ ที่มีแมว (พูดว่า "เปอร์เซีย" และ "สยาม") ฉันจะเคยได้รับแมวและสุนัข อยู่ในอาร์เรย์เดียวกันหรือไม่ หรือแมวและสุนัขจะไม่อยู่ในกระบวนการเดียวกันในเวลาเดียวกันหรือไม่?

1
วัตถุประสงค์ของคำหลักคงที่ในพารามิเตอร์อาร์เรย์ของฟังก์ชั่นเช่น "char s [static 10]" คืออะไร?
ขณะเรียกดูซอร์สโค้ดฉันพบฟังก์ชั่นเช่นนี้: void someFunction(char someArray[static 100]) { // do something cool here } ด้วยการทดลองบางอย่างดูเหมือนว่าผู้มีสิทธิ์อื่นอาจปรากฏที่นั่นด้วย: void someFunction(char someArray[const]) { // do something cool here } ดูเหมือนว่าตัวระบุจะได้รับอนุญาตเฉพาะภายใน[ ]เมื่ออาร์เรย์ถูกประกาศเป็นพารามิเตอร์ของฟังก์ชัน สิ่งเหล่านี้ทำอะไร ทำไมมันแตกต่างกันสำหรับพารามิเตอร์ฟังก์ชั่น?
144 c  arrays  parameters  static 

9
วัตถุประสงค์ระดับ C ตัวแปรระดับคงที่
ฉันมีคลาสฟิล์มซึ่งแต่ละอันเก็บ ID ที่ไม่ซ้ำกัน ใน C #, Java เป็นต้นฉันสามารถกำหนด static int currentID และทุกครั้งที่ฉันตั้ง ID ฉันสามารถเพิ่ม currentID และการเปลี่ยนแปลงที่เกิดขึ้นในระดับชั้นไม่ใช่ระดับวัตถุ สามารถทำได้ใน Objective-C หรือไม่ ฉันพบว่ามันยากมากที่จะหาคำตอบสำหรับสิ่งนี้


14
วิธีการคงที่ได้รับมรดกใน Java?
ฉันอ่านคู่มือโปรแกรมเมอร์ของ Java ™ SCJP Certificationโดย Khalid Mughal ในบทที่สืบทอดมันอธิบายว่า การสืบทอดของสมาชิกเชื่อมโยงอย่างใกล้ชิดกับการเข้าถึงที่ประกาศไว้ หากสมาชิกระดับซุปเปอร์คลาสสามารถเข้าถึงได้โดยใช้ชื่อแบบง่ายในคลาสย่อย (โดยไม่ต้องใช้ไวยากรณ์เพิ่มเติมใด ๆ เช่น super) สมาชิกนั้นจะถูกพิจารณาว่าสืบทอด นอกจากนี้ยังกล่าวถึงวิธีการคงที่ไม่ได้รับการสืบทอด แต่โค้ดด้านล่างนี้ใช้ได้อย่างสมบูรณ์แบบ: class A { public static void display() { System.out.println("Inside static method of superclass"); } } class B extends A { public void show() { // This works - accessing display() by its simple …
142 java  inheritance  static 


16
สมาชิกเสมือนแบบ C ++ คงที่?
เป็นไปได้ใน C ++ ที่จะมีฟังก์ชั่นสมาชิกที่มีทั้งstaticและvirtual? เห็นได้ชัดว่าไม่มีวิธีที่ตรงไปตรงมาที่จะทำมัน ( static virtual member();เป็นข้อผิดพลาดในการคอมไพล์) แต่อย่างน้อยก็มีวิธีที่จะบรรลุผลเช่นเดียวกันหรือไม่? IE: struct Object { struct TypeInformation; static virtual const TypeInformation &GetTypeInformation() const; }; struct SomeObject : public Object { static virtual const TypeInformation &GetTypeInformation() const; }; มันสมเหตุสมผลที่จะใช้GetTypeInformation()ทั้งในอินสแตนซ์ ( object->GetTypeInformation()) และคลาส ( SomeObject::GetTypeInformation()) ซึ่งอาจมีประโยชน์สำหรับการเปรียบเทียบและจำเป็นสำหรับเทมเพลต วิธีเดียวที่ฉันนึกถึงเกี่ยวข้องกับการเขียนสองฟังก์ชั่น / ฟังก์ชั่นและค่าคงที่ต่อคลาสหรือใช้มาโคร ทางออกอื่น ๆ
140 c++  static  virtual 

6
เป็นไปได้ไหมที่จะสร้างคลาสสแตติกใน PHP (เช่นใน C #)
ฉันต้องการสร้างคลาสแบบคงที่ใน PHP และให้มันทำงานเหมือนใน C # ดังนั้น ตัวสร้างจะถูกเรียกโดยอัตโนมัติในการโทรครั้งแรกไปที่ชั้นเรียน ไม่ต้องใช้การเริ่มต้น อะไรทำนองนี้ ... static class Hello { private static $greeting = 'Hello'; private __construct() { $greeting .= ' There!'; } public static greet(){ echo $greeting; } } Hello::greet(); // Hello There!

4
แอตทริบิวต์ ThreadStatic ทำงานอย่างไร
วิธีการ[ThreadStatic]ทำงานของแอตทริบิวต์? ฉันคิดว่าคอมไพเลอร์จะปล่อย IL บางอย่างเพื่อรับ / เรียกคืนค่าใน TLS แต่เมื่อดูที่การถอดแยกดูเหมือนว่าจะไม่ทำในระดับนั้น การติดตามผลจะเกิดอะไรขึ้นถ้าคุณใส่สมาชิกที่ไม่อยู่กับที่? เรามีนักพัฒนาที่ทำผิดพลาดและคอมไพเลอร์ไม่ได้แจ้งเตือน ปรับปรุง ตอบคำถามที่สองที่นี่: ThreadStatic แก้ไขด้วย Static C #
138 c#  static  threadstatic 

4
ตกลงเพื่อใช้อินสแตนซ์ Gson เป็นเขตข้อมูลคงที่ใน model bean (นำมาใช้ใหม่) หรือไม่
นี่คือแบบจำลองที่ฉันใช้: public class LoginSession { private static final Gson gson = new Gson(); private String id; private String name; private long timestamp; public LoginSession(String id, String name) { this.id = id; this.name = name; this.timestamp = System.currentTimeMillis(); } public String toJson() { return gson.toJson(this); } public static LoginSession fromJson(String json) …

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