Как Вы включаете анти-искажение в произвольных приложениях Java?

  1. Вы можете использовать добрых старомодных друзей: Live On Coliru
    template 
    class A {
      public:
        A(const T &id) : m_id(id) {}
      private:
        template  friend void boost::serialization::serialize(Ar&,A&,const unsigned);
        T m_id;
    };
    
    namespace boost {
    namespace serialization {
        template 
        void serialize(Archive &ar, A &a, const unsigned int)
        {
            ar & BOOST_SERIALIZATION_NVP(a.m_id);
        }
    }
    }
    
  2. Вы можете использовать подход getRef(). Для этого не нужны никакие друзья (менее навязчивые), требующие make_nvp (потому что вы не можете использовать a.getRef() в качестве имени элемента XML. К сожалению, с ужасным способом инкапсуляции ссылки getter break. Я лично предпочел бы иметь m_id публичный, в первую очередь. Live On Coliru
    template 
    class A {
    public:
        A(const T &id) : m_id(id) {}
    
        T& getRef()             { return m_id; } 
        T const& getRef() const { return m_id; } 
    private:
        T m_id;
    };
    
    namespace boost {
    namespace serialization {
        template 
        void serialize(Archive &ar, A &a, const unsigned int)
        {
            ar & boost::serialization::make_nvp("m_id", a.getRef());
        }
    }
    }
    

    Бонусные очки:

  3. Вы можете использовать структуру стиля «pimpl». forward объявляет структуру внутри A<>:
    template 
    class A {
    public:
        struct access;
    
        A(const T &id) : m_id(id) {}
    private:
        T m_id;
    };
    
    Это менее навязчиво, чем подход getRef(), который просто полностью разрушает инкапсуляцию. Теперь вы можете скрыть частный доступ внутри этого класса:
    namespace boost {
    namespace serialization {
        template 
        void serialize(Archive &ar, A &a, const unsigned int version)
        {
            A::access::serialize(ar, a, version);
        }
    }
    }
    
    Конечно, вам все равно нужно но это может быть сделано в отдельном заголовке и вообще не влияет на класс A & lt; (или любую его специализацию):
    template 
    struct A::access {
        template 
        static void serialize(Archive &ar, A &a, const unsigned int) {
            ar & BOOST_SERIALIZATION_NVP(a.m_id);
        }
    };
    
    См. Live On Coliru также
50
задан raven 29 October 2008 в 18:12
поделиться

2 ответа

Если у Вас есть доступ к источнику, можно сделать это в основном методе:

  // enable anti-aliased text:
  System.setProperty("awt.useSystemAAFontSettings","on");

или, (и если у Вас нет доступа к источнику, или если это легче) можно просто передать системные свойства выше в jvm путем добавления этих опций к командной строке:

-Dawt.useSystemAAFontSettings=on
73
ответ дан rcreswick 7 November 2019 в 20:57
поделиться

спасибо за информацию. Я задавался вопросом об этом сам. Я использую SoapUI (www.eviware.com), и он, по умолчанию, не использует текст AA. Я добавил-Dawt.useSystemAAFontSettings=on-Dswing.aatext=true к пакетному файлу, который запускает его, НО это НЕ имело значения. Угадайте, должен спросить я на их форуме.

0
ответ дан anjanb 7 November 2019 в 20:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: