我可以在Java类型URL上使用自定义协议吗?

时间:2019-04-26 05:06:22

标签: java url kotlin

我在下面(用Kotlin写),一切都很好

template <typename T>
void ExecQuery()
{
    static_assert(std::is_base_of<DBEntity, T>(), "a Class should inherit from DBEntity");

    const auto& props = entity->GetPropsMeta();
    auto row = GetData(props);
    T entity = new T();
    for (const auto& colName : row.Columns)
    {
        string val = row[colName];
        // TODO: SET ENTITY'S PROPERTY colName with val
    }
}

#define ENTITIY_PROP(Class, Type, Name) \
        private: \
            int _##Name; \
        public: \
            class Property_##Name { \
            public: \
                Property_##Name(Class* parent) : _parent(parent) \
                { \
                    _parent->SetPropMeta(#Name, #Type); \
                } \
                Type operator = (Type value) \
                { \
                    _parent->Set##Name(value); \
                    return _parent->Get##Name(); \
                } \
                operator Type() const \
                { \
                    return static_cast<const Class*>(_parent)->Get##Name(); \
                } \
                Property_##Name& operator =(const Property_##Name& other) \
                { \
                    operator=(other._parent->Get##Name()); return *this; \
                }; \
                Property_##Name(const Property_##Name& other) = delete; \
            private: \
                Class* _parent; \
            } Name { this }; \
            \
            Type Get##Name() const { return _##Name; } \
            void Set##Name(int value) { _##Name = value; } \

    class DBEntity
    {
    private:
        std::unordered_map<std::string, std::string> _propsMeta;

    public:
        const std::unordered_map<std::string, std::string>& GetPropsMeta() { return _propsMeta; }    
    };

但是,我正在尝试制定一个客户计划(即使用“ myprotocol”而不是“ http”)。

val url = URL("http://my-page/content?page=0")

它将崩溃val url = URL("myprotocol://my-page/content?page=0")

有没有办法让我允许自定义协议? 即,我想使用与普通URL格式相同的格式,因此我可以提取路径,查询等,但协议(方案)是自定义的。

1 个答案:

答案 0 :(得分:0)

@JBNizet的答案很完美。只需使用

val url = URI("http://my-page/content?page=0")