জাভা, 102 95 89 88 78 বাইট
class A<T>{}class B<T>extends A<A<?super B<B<T>>>>{A<?super B<A>>a=new B<>();}
এটি StackOverflowErrorঘটতে থাকে এমনটি দিয়ে শেষ হয় কারণ জেনেরিক রেজোলিউশন সিস্টেমটি অন্য জেনেরিকগুলি সমাধান করার জন্য কোনও মূল সিদ্ধান্ত নিতে পারে না।
ক্রেডিট যেখানে প্রাপ্য ।
এখানে কি হয়?
A<T>একটি 1-অক্ষরের পিতা বা মাতা আছে ঠিক আছে। এটা জেনেরিক আমি ব্যবহার করতে পারতাম List, তবে 4 টি বর্ণের আমদানি এবং পুনরাবৃত্তি খুব দীর্ঘ।
B<T> একটি বেসিক জেনেরিক ঘোষণা।
B extends Aএর মধ্যে Bএবং এর মধ্যে একটি শ্রেণিবিন্যাস থাকা দরকার A।
extends A<A>স্ব স্ব রেফারেন্স তৈরি করে A<T>।
A<? super B> জেনারিকগুলির জন্য অনুসন্ধানটি চালু করে A<T>
B<B<T>>একটি স্ব-রেফারেন্স তৈরি করে B<T>।
A<...> a=new B<>()জেনেরিকের ব্যবহারকে জোর করে, কেবল তাদের সংজ্ঞা পরিবর্তনের পরিবর্তে, সংকলনের সময় রেজোলিউশনকে বাধ্য করা B, এবং তারপরে নয়।
A<?super Bএকটি স্ব-স্ব-রেফারেন্স তৈরি করে, তাই আমাদের জেনেরিকের ক্ষেত্রে একটি প্রকারের এবং অন্যটির কাছে দুটিই রেফারেন্স রয়েছে A।
B<A>একটি স্ব-স্ব-রেফারেন্স তৈরি করে, তাই আমাদের জেনেরিকের ক্ষেত্রে একটি প্রকারের এবং অন্যটির কাছে দুটিই রেফারেন্স রয়েছে B।
এখন, Aটাইপটির জেনেরিক টাইপ রয়েছে Aএবং Bতবে কোনটি বেছে নেওয়া উচিত? নিজের সম্পর্কে ভুলে যাও, সমাধান করার চেষ্টা করা যাক B। পিং।
ঠিক আছে, Bজেনেরিকস টাইপ আছে Aএবং B, তবে কোনটি বেছে নেওয়া উচিত? নিজের সম্পর্কে ভুলে যাও, সমাধান করার চেষ্টা করা যাক A। পং।
পুনরাবৃত্তির এই ধরনের সত্যিই মত বৈধ মামলা আছে কারণ এড়ানো যায় না A<B<A<B<A<B<Object>>>>>>উদাহরণস্বরূপ একটি JSON বস্তু: List<Map<String,Map<String,List<Map<String,List<String>>>>>>।
সংকলন ফলাফল
$ javac NoCompile.java
The system is out of resources.
Consult the following stack trace for details.
java.lang.StackOverflowError
at com.sun.tools.javac.code.Types$UnaryVisitor.visit(Types.java:3260)
at com.sun.tools.javac.code.Types$23.visitClassType(Types.java:2587)
at com.sun.tools.javac.code.Types$23.visitClassType(Types.java:2579)
at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:554)
at com.sun.tools.javac.code.Types$UnaryVisitor.visit(Types.java:3260)
at com.sun.tools.javac.code.Types$23.visitClassType(Types.java:2592)
at com.sun.tools.javac.code.Types$23.visitClassType(Types.java:2579)
at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:554)
আমার সিস্টেমে স্ট্যাক ট্রেস 1024 লাইন দেখানোর পরে বন্ধ হয়ে যায় যা আসলে 4 টি একই লাইন 256 বার পুনরাবৃত্তি হয়েছিল, সুতরাং এটি অসীম পুনরাবৃত্তি প্রমাণ করে। আমি আপনাকে পুরো ট্রেস ছাড়ব।
জমা
- 102 → 95 বাইট:
interface+ এর implementsসাথে class+ প্রতিস্থাপন করা হয়েছে extends।
- 95 → 89 বাইট: প্রতিস্থাপিত
Longসঙ্গে A(দু'বার)।
- 89 → 88 বাইট: ব্যবহৃত ডায়মন্ড অপারেটর (
new B<A>()→ new B<>())।
- 88 → 78 বাইট: ভেটোক্লোজ ধন্যবাদ, একটি শ্রেণীর সদস্যের জন্য পরিবর্তনশীল ঘোষণা সরানো ।