27 মার্চ, 2025 থেকে, আমরা AOSP তৈরি করতে এবং অবদান রাখতে aosp-main
এর পরিবর্তে android-latest-release
ব্যবহার করার পরামর্শ দিচ্ছি। আরও তথ্যের জন্য, AOSP-তে পরিবর্তনগুলি দেখুন।
নিরাপদ ইউনিয়ন
সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন
আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।
HIDL-এ safe_union
একটি স্পষ্টভাবে ট্যাগ করা ইউনিয়ন টাইপ প্রতিনিধিত্ব করে। এটি একটি union
অনুরূপ, ব্যতীত safe_union
অন্তর্নিহিত প্রকারের উপর নজর রাখে এবং জাভার সাথে সামঞ্জস্যপূর্ণ। নতুন এবং আপগ্রেড করা ডিভাইসগুলির জন্য Android 10 এবং উচ্চতর সংস্করণে safe_union
টাইপ উপলব্ধ।
সিনট্যাক্স
HIDL-এ একটি safe_union
প্রকাশ করা হয় হুবহু একটি union
বা struct
মতো।
safe_union MySafeUnion {
TypeA a;
TypeB b;
...
};
ব্যবহার
রানটাইমে, একটি safe_union
শুধুমাত্র এক প্রকার। ডিফল্টরূপে, এটি ইউনিয়নে প্রথম প্রকার। উদাহরণস্বরূপ, উপরে, MySafeUnion
ডিফল্টভাবে TypeA
।
hidl-gen
C++ এবং Java উভয় ক্ষেত্রেই safe_union
জন্য একটি কাস্টম ক্লাস বা কাঠামো তৈরি করে। এই শ্রেণীতে প্রতিটি সদস্যের জন্য একটি বৈষম্যকারী অন্তর্ভুক্ত রয়েছে ( hidl_discriminator
এ), বর্তমান বৈষম্যকারী ( getDiscriminator
) এবং প্রতিটি সদস্যের জন্য সেটার এবং গেটার পাওয়ার একটি পদ্ধতি। প্রতিটি সেটার এবং গেটারকে ঠিক তার সদস্য হিসাবে নাম দেওয়া হয়েছে। উদাহরণস্বরূপ, TypeA a
এর গেটারকে "a" বলা হয়, এবং এটি TypeA
এর কিছু প্রদান করে। সংশ্লিষ্ট সেটটারকে "a"ও বলা হয় এবং TypeA
এর একটি প্যারামিটার নেয়। একটি safe_union
এ মান সেট করা বৈষম্যকারীর মান আপডেট করে যা getDiscriminator
দ্বারা প্রত্যাবর্তিত হয়। বর্তমান বৈষম্যকারী নয় এমন একটি বৈষম্যকারীর কাছ থেকে একটি মান অ্যাক্সেস করা প্রোগ্রামটি বাতিল করে দেয়। উদাহরণস্বরূপ, যদি MySafeUnion
এর একটি উদাহরণে getDiscriminator
কল করা hidl_discriminator::b
ফেরত দেয়, তাহলে a
পুনরুদ্ধার করার চেষ্টা করে প্রোগ্রামটি বাতিল হয়ে যায়।
মনোস্টেট
একটি safe_union
সর্বদা একটি মান থাকে, কিন্তু যদি এটি একটি মান না রাখতে চায়, android.hidl.safe_union@1.0::Monostate
একটি স্থানধারক হিসাবে ব্যবহার করুন। উদাহরণস্বরূপ, নিম্নলিখিত ইউনিয়নটি noinit
(খালি) বা foo
হতে পারে:
import android.hidl.safe_union@1.0::Monostate;
safe_union OptionalFoo {
Monostate noinit;
Foo foo;
};
এই পৃষ্ঠার কন্টেন্ট ও কোডের নমুনাগুলি Content License-এ বর্ণিত লাইসেন্সের অধীনস্থ। Java এবং OpenJDK হল Oracle এবং/অথবা তার অ্যাফিলিয়েট সংস্থার রেজিস্টার্ড ট্রেডমার্ক।
2025-07-29 UTC-তে শেষবার আপডেট করা হয়েছে।
[[["সহজে বোঝা যায়","easyToUnderstand","thumb-up"],["আমার সমস্যার সমাধান হয়েছে","solvedMyProblem","thumb-up"],["অন্যান্য","otherUp","thumb-up"]],[["এতে আমার প্রয়োজনীয় তথ্য নেই","missingTheInformationINeed","thumb-down"],["খুব জটিল / অনেক ধাপ","tooComplicatedTooManySteps","thumb-down"],["পুরনো","outOfDate","thumb-down"],["অনুবাদ সংক্রান্ত সমস্যা","translationIssue","thumb-down"],["নমুনা / কোড সংক্রান্ত সমস্যা","samplesCodeIssue","thumb-down"],["অন্যান্য","otherDown","thumb-down"]],["2025-07-29 UTC-তে শেষবার আপডেট করা হয়েছে।"],[],[],null,["# Safe union\n\n`safe_union` in HIDL represents an explicitly tagged union type.\nThis is similar to a `union` except `safe_union` keeps\ntrack of the underlying type and is compatible with Java. The\n`safe_union` type is available in Android 10\nand higher for new and upgraded devices.\n\nSyntax\n------\n\nA `safe_union` is expressed in HIDL exactly like a\n`union` or `struct`. \n\n```scdoc\nsafe_union MySafeUnion {\n TypeA a;\n TypeB b;\n ...\n};\n```\n\nUsage\n-----\n\nAt runtime, a `safe_union` is only ever one type. By default, it's\nthe first type in the union. For instance, above,\n`MySafeUnion` is by default `TypeA`.\n\n`hidl-gen` generates a custom class or struct for a\n`safe_union` in both C++ and Java. This class includes a\ndiscriminator for each member (in `hidl_discriminator`), a method to\nget the current discriminator (`getDiscriminator`), and setters and\ngetters for each member. Each setter and getter is named exactly as its member.\nFor instance, the getter for `TypeA a` is called \"a\", and it\nreturns something of `TypeA`. The corresponding setter is also\nbe called \"a\" and takes a parameter of `TypeA`. Setting the value in\na `safe_union` updates the value of the discriminator as\nreturned by `getDiscriminator`. Accessing a value from a\ndiscriminator that isn't the current discriminator aborts the program. For\ninstance, if calling `getDiscriminator` on an instance of\n`MySafeUnion` returns `hidl_discriminator::b`, then\ntrying to retrieve `a` aborts the program.\n\nMonostate\n---------\n\nA `safe_union` always has a value, but if it is desired to not\nhave a value, use `android.hidl.safe_union@1.0::Monostate` as a\nplaceholder. For instance, the following union can either be\n`noinit` (empty) or `foo`: \n\n```python\nimport android.hidl.safe_union@1.0::Monostate;\n\nsafe_union OptionalFoo {\n Monostate noinit;\n Foo foo;\n};\n```"]]