标签: builder

如何显示AlertDialog.builder是否正在显示并取消它?

这是我的代码 -

View layout = LayoutInflater.from(this).inflate(R.layout.dialog_loc_info, null);
final Button mButton_Mobile = (Button) layout.findViewById(R.id.button);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(layout);
mButton_Mobile.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View arg0) {
        if(builder.)
            showDialog(); // this is another dialog, nothing to do with this code
        }
    });
builder.setNeutralButton(getString(android.R.string.ok),
                         new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        dialog.dismiss();
    }
});
builder.show();
Run Code Online (Sandbox Code Playgroud)

android builder android-alertdialog

17
推荐指数
1
解决办法
3万
查看次数

继承的Builder设计模式:有更好的方法吗?

我正在创建一系列构建器来清理语法,为我的模拟创建域类,作为改进整体单元测试的一部分.我的构建器基本上填充了一个域类(例如a Schedule),其中一些值通过调用相应的值WithXXX并将它们链接在一起来确定.

我在构建器中遇到了一些共性,我想将它抽象到基类中以增加代码重用.不幸的是,我最终看起来像:

public abstract class BaseBuilder<T,BLDR> where BLDR : BaseBuilder<T,BLDR> 
                                          where T : new()
{
    public abstract T Build();

    protected int Id { get; private set; }
    protected abstract BLDR This { get; }

    public BLDR WithId(int id)
    {
        Id = id;
        return This;
    }
}
Run Code Online (Sandbox Code Playgroud)

特别注意protected abstract BLDR This { get; }.

域类构建器的示例实现是:

public class ScheduleIntervalBuilder :
    BaseBuilder<ScheduleInterval,ScheduleIntervalBuilder>
{
    private int _scheduleId;
    // ...

    // UG! here's the problem:
    protected override ScheduleIntervalBuilder This …
Run Code Online (Sandbox Code Playgroud)

c# generics builder

16
推荐指数
2
解决办法
5140
查看次数

Ruby XML :: Builder,在元素名称中带有连字符

我正在尝试使用XML :: Builder生成一些XML,但我的元素名称需要在其中包含连字符.

当我尝试时,我得到未定义的方法,元素名称在连字符处被截断

xml.instruct!

xml.update-manifest do
  xml.latest-id @latest_version_update.guid
  xml.download-url @latest_version_update.download_url
  xml.release-information-url version_guid_url(@latest_vesrion_update.guid)
end
Run Code Online (Sandbox Code Playgroud)

固定版本是

xml.instruct!

xml.tag! 'update-manifest' do
  xml.tag! 'latest-id', @latest_version_update.guid
  xml.tag! 'download-url', @latest_version_update.download_url
  xml.tag! 'release-information-url', version_guid_url(@latest_vesrion_update.guid)
end
Run Code Online (Sandbox Code Playgroud)

ruby xml builder

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

Eclipse - 什么是Builder?

我不明白什么是CDT中的构建器,以及与"C/C++ Build"内容的关系是什么.

我在"C/C++ Build"配置中设置了SCons.它确实有效:我做了两个配置(发布和调试),并启动了我的SCons脚本.但是当我现在尝试调试时,我正在研究这些Builders stauuf(我正在发现Eclipse ......).

关于这一点,文档根本不清楚.

感谢帮助.

eclipse-cdt builder

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

使用JPA Criteria构建器的复杂查询

有人可以建议我如何使用JPA Criteria构建器API构建以下查询吗?

SELECT id,status,created_at from transactions where status='1' 
   and currency='USD' and appId='123' order by id
Run Code Online (Sandbox Code Playgroud)

如果我能找到一个基于作为Map<String,String>使用元模型类或任何其他方式给出的参数动态创建的解决方案,那就更好了.

java jpa criteria builder

16
推荐指数
1
解决办法
3万
查看次数

StringBuilder和Builder Pattern

我是设计模式的新手,所以我有一个关于Builder模式的问题.今天我听说Builder Pattern与StringBuilderJava中的类C#不同.我知道Builder Pattern的主要目标是在几个步骤中创建复杂的对象......我认为这是StringBuilder用它的方法制作的Append...所以我很难找到差异......

你能告诉我是否真的有什么不同,如果是......它是什么:)?

stringbuilder design-patterns builder

16
推荐指数
2
解决办法
1万
查看次数

我可以在Java Enum上使用构建器模式吗?

我正在重写一些代码,并且我已经决定了重新创建类的方法,因为有固定数量的工作表,我将它们创建为枚举.这是基于构建器模式与伸缩构造器的可读性的决定.

代码我抓住了一些.xls文件,添加了标题(并从其他.xls文件中读取了一些文件),也许还有一些子表格.然后,它以特定的方式将各种这些工作表合并在一起,以在主要的Excel工作簿上制作选项卡.我的问题是,某些工作簿选项卡使用不同数量的工作表作为参数.我正在尝试应用构建器模式.这是我正在尝试编写的代码:

public enum workBookSheet {
    mySheet1("Name1","mainSheet1.xls",true,1).addSubSheet("pathToSubSheet1.xls"),
    mySheet2("Name2","mainSheet2.xls",true,2).addHeaderSheet("pathToHeaders.xls").addSubsheet("pathtoSubSheet2.xls");

    private String tabName;
    private String mainSheetName;
    private Boolean available;
    private Integer order;
    private String subSheetName;
    private String headerSheetName;

    private workBookSheet(String tabName, String mainSheetName, Boolean available, Integer order){
        this.tabName = tabName;
        this.mainSheetName = mainSheetName;
        this.available = available;
        this.order = order;
    }
    public workBookSheet addSubSheet(String subSheetName){
        this.subSheetName = subSheetName;
        return this;
    }
    public workBookSheet addHeaderSheet(String headerSheetName){
        this.headerSheetName = headerSheetName;
        return this;
    }

}
Run Code Online (Sandbox Code Playgroud)

java给我的错误似乎是说Java期望我的枚举声明(顶部的'枚举构造函数'的逗号分隔列表)只包含构造函数,而不是其他方法.我可以将这些方法移到下面的"构建器"方法中,无需投诉.

public void buildSheets(){
    mySheet1.addSubSheet("pathToSubSheet1.xls");
    mySheet2.addHeaderSheet("pathToHeaders.xls").addSubSheet("pathtoSubSheet2.xls");
}
Run Code Online (Sandbox Code Playgroud)

这是在枚举上实现构建器模式的唯一方法吗?它确实需要我运行一个单独的方法,这不是太麻烦.虽然我觉得我打破了这种模式(我想,如果这样做的话,这不是一件坏事.)

注意我已经仔细研究过,看看是否有其他人在网上或其他地方提出这个问题.我发现的最接近的是关于Enums和Factories的问题,但这并没有完全回答我的问题.另外我知道这不是构建器模式,因为我没有单独的类,然后接受创建新枚举的build()方法.我想这是我初始设计中问题的根源,但我对Java相对较新.

那么有没有更好的方法在Java枚举上使用构建器模式?或者我的'足够接近'是什么?

java enums builder

16
推荐指数
2
解决办法
6702
查看次数

如何在方法上使用Lombok @Builder注释

我想有一个简单的方法来构建测试数据,并发现Builder模式非常适合这里描述的.然而,为了减少组件测试中的样板代码,我发现来自Project Lombok的@Builder是一个不错的候选人.但是,我无法找到有关如何在方法上使用它的任何文档或在线示例.我想在某种工厂方法上使用@Builder,因为我无法对实现进行任何更改.

有人可以考虑如何在方法上实际使用@Builder吗?

java builder lombok

16
推荐指数
2
解决办法
4万
查看次数

Java Builder模式和"深层"对象层次结构

在"深层"对象层次结构中使用Builder模式的最佳实践是什么?为了详细说明,我探讨了将Joshua Bloch提出的Builder模式应用于我的XML绑定代码的想法(我使用的是SimpleXML,但这个问题适用于任何情况).我的对象层次结构深度为4级,具有不同程度的复杂性.我的意思是,在某些级别中,我只有几个属性用于我的对象,而在某些其他级别,我有多达10个属性.

所以请考虑这个假设的例子(为简洁起见,我省略了Simple XML注释)

public class Outermost {

    private String title;
    private int channel;
    private List<Middle> middleList;

}

class Middle{
    private int id;
    private String name;
    private boolean senior;
    /* ... ... 10 such properties */

    private Innermost inner;
}

class Innermost{
    private String something;
    private int foo;
    /* ... Few more of these ..*/
}
Run Code Online (Sandbox Code Playgroud)

如果我想Outermost使用构建器强制创建对象,那么最好的方法是什么?最明显的答案是为inner static Builder上述每个类提供类.

但是,这不会让生成器模式试图解决的问题变得笨拙吗?我正在考虑这样的事情 - 这将强制执行"由内而外"的方法 - 这意味着在将Innermost对象添加到Middle对象之前必须完全构造和实例化对象.但我们都知道在实践中(特别是在构建XML或JSON时),我们很少有"及时"的信息来实现这一点.

有可能,人们最终会在每个级别都拥有每个属性的变量; 并在最后创建对象.或者,最终会让代码中出现多个级别的Builder,从而增加了混乱.

那么,关于如何优雅地实现这一点的任何想法?

java design-patterns builder

15
推荐指数
2
解决办法
8542
查看次数

lombok中的建设者的继承

我试图将lombok用于我的项目.

我有一个A类:

@Data
@Builder
public class A {
    Integer a1;
}
Run Code Online (Sandbox Code Playgroud)

和B级:

@Data
public class B extends A {
    Integer b1;

    @Builder
    public B(Integer b1, Integer a1) {
        super(a1);
        this.b1 = b1;
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,说B中的builder()无法覆盖A中的builder(),因为BBuilder中的返回类型与ABuilder中的返回类型不兼容.

有没有办法用lombok做到这一点?我不想为B写完整的构建器,除非我没有任何其他选项.

PS:由于问题,我为B类提供了明确的构造函数.我试着搜索,但我找不到同样好的解决方案.任何帮助都非常感谢.

java inheritance design-patterns builder lombok

15
推荐指数
4
解决办法
9434
查看次数