Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Начнем с основ, вот неофициальное определение реестра:
Но:
При этом может быть полезно понять этот класс, чтобы на данный момент эффективно работать с Tink.
Что происходит, когда вы вызываете getPrimitive() для дескриптора набора ключей? Он перенаправляет ваш вызов в реестр 1 , который содержит объекты с конкретными методами для создания ключей и примитивов , такие как ключ AesGcm или экземпляр ChunkedMac. Задача реестра — перенаправить вызов на правильный объект. Это работает только в том случае, если объект зарегистрирован, поэтому важно всегда регистрировать примитивы, которые вы собираетесь использовать .
А что, если я использую библиотеку, в которой уже зарегистрированы нужные мне примитивы?
Проблема именно в этом. И одна из причин удаления реестра. Потому что в этом случае ваш код работает только до тех пор, пока авторы библиотеки не решат больше не регистрировать этот примитив. На этом этапе ваш код ломается, и причина неочевидна и запутанна. Поэтому всегда регистрируйте то, что вы используете . Например, если вы планируете использовать MAC в своем Java-коде, на этапе установки вам следует сделать следующее:
MacConfig.register()
Этот код гарантирует, что все необходимые объекты будут зарегистрированы в нужных местах, чтобы вы могли использовать примитив MAC.
Есть еще одна сторона этой проблемы. Некоторые из ваших зависимостей могут регистрировать вещи, которые вам на самом деле не нужны и от которых вы бы предпочли не зависеть. Это еще одна причина удалить глобальный реестр.
если быть точным, к глобальному одноэлементному экземпляру реестра классов. Мы используем имя «Реестр» как для класса, так и для синглтона, взаимозаменяемо. ↩
[[["Прост для понимания","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-25 UTC."],[[["\u003cp\u003eThe Registry in Tink is a global entity responsible for generating new keys and primitives, but it is intended for internal use only and is slated for removal.\u003c/p\u003e\n"],["\u003cp\u003eThe Registry forwards calls from \u003ccode\u003egetPrimitive()\u003c/code\u003e to objects that create keys and primitives, and these objects must be registered for the process to work.\u003c/p\u003e\n"],["\u003cp\u003eIt's essential to explicitly register the primitives you intend to use (e.g., \u003ccode\u003eMacConfig.register()\u003c/code\u003e), to ensure your code works consistently and doesn't rely on the unpredictable behavior of other libraries.\u003c/p\u003e\n"],["\u003cp\u003eRelying on other libraries to register primitives can lead to unexpected code breakage if the library's registration practices change, making it crucial to self-manage registrations.\u003c/p\u003e\n"]]],["The Registry is a global entity in Tink for generating keys and primitives, but it's slated for removal and should not be directly accessed. `getPrimitive()` calls are forwarded to the Registry, which then creates the correct object, if registered. It is crucial to register the primitives one intends to use directly, using method like `MacConfig.register()`, because relying on library registration leads to code fragility and unwanted dependencies. The class is considered for removal.\n"],null,[]]