小编use*_*789的帖子

为自引用Ecto模型构建JSON映射

我有一个Ecto模型:

defmodule Project.Category do
  use Project.Web, :model

  schema "categories" do
    field :name, :string
    field :list_order, :integer
    field :parent_id, :integer
    belongs_to :menu, Project.Menu
    has_many :subcategories, Project.Category, foreign_key: :parent_id
    timestamps
  end

  @required_fields ~w(name list_order)
  @optional_fields ~w(menu_id parent_id)

  def changeset(model, params \\ :empty) do
    model
    |> cast(params, @required_fields, @optional_fields)
  end
end
Run Code Online (Sandbox Code Playgroud)

如您所见,Category模型可以通过子类别atom引用自身.

以下是与此模型关联的视图:

defmodule Project.CategoryView do
  use Project.Web, :view

  def render("show.json", %{category: category}) do
    json = %{
      id: category.id,
      name: category.name,
      list_order: category.list_order
      parent_id: category.parent_id
    }
    if is_list(category.subcategories) do
      children = render_many(category.subcategories, Project.CategoryView, …
Run Code Online (Sandbox Code Playgroud)

json elixir ecto phoenix-framework

14
推荐指数
1
解决办法
1472
查看次数

将24位位图数据正确加载到32位Bitmap对象中

我正在尝试将包含24位位图文件数据的字节数组加载到Android中的Bitmap对象中,但我遇到了麻烦,因为Bitmap只支持32位和16位格式.以下是我为了将24位数据转换为32位而想出的内容:

byte[] file = new byte[is.available()];
is.read(file);
is.close();
byte[] paddedFile = new byte[file.length + file.length / 3]; //we will be adding 1 more byte (alpha value) for each RGB triplet
for (int i = 0; i < file.length / 3; i++) {
    paddedFile[i * 4] = file[i * 3];
    paddedFile[i * 4 + 1] = file[i * 3 + 1];
    paddedFile[i * 4 + 2] = file[i * 3 + 2];
    paddedFile[i * 4 + 3] = -1; //manually added …
Run Code Online (Sandbox Code Playgroud)

java android bitmap

5
推荐指数
1
解决办法
929
查看次数

避免对包含相同方法的不同类型的类的多个定义

我有2个课程:

public class A {
    private String label;

    public String getLabel() {
        return label;
    }
}

public class B {
    private String label;

    public String getLabel() {
        return label;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我有另一个类,我想访问这些类的标签值:

public class C {
    private String label;

    public C(A object) {
        label = object.getLabel();
    }
}
Run Code Online (Sandbox Code Playgroud)

例如,上面的定义仅适用于A.我希望能够将A或B传递给C的构造函数.我能想到的最接近的事情是使C成为泛型类,但后来我失去了对getLabel()的访问权限.我怎么能继续这个呢?我觉得这是一个基本的设计模式,但由于我是Java的新手,我不知道从哪里开始.任何帮助是极大的赞赏.

java

1
推荐指数
1
解决办法
177
查看次数

标签 统计

java ×2

android ×1

bitmap ×1

ecto ×1

elixir ×1

json ×1

phoenix-framework ×1