class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
builder: BotToastInit(), //1. call BotToastInit
navigatorObservers: [BotToastNavigatorObserver()],
debugShowCheckedModeBanner: false,
title: 'Pak Coins',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MySplashScreen(),
);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的 MyApp 类,想要调用 2 个构建器
突然间,视觉设计窗口从我的Interface Builder中消失了.它是一个常规的UIView,上面有一些UIImageView,UILabel和UIButtons.当我打开IB时,我可以看到文档窗口(包含文件的所有者,第一响应者和视图),库和检查器,但视觉设计窗口消失了.双击文档窗口中的"视图"不做任何事情.如果我进入列表模式,我可以看到视图上的所有组件,但只是找不到可视化设计窗口.所有其他XIB都可以正常打开,只有这个XIB丢失了它的设计窗口.
首先我想也许它隐藏在屏幕的某个地方.尝试各种各样的东西,甚至重新启动计算机,但没有任何帮助.
有人可以帮忙吗?提前致谢!顺便说一句,我正在运行SDK 3.2 Beta 3.
我发现大多数人都在谈论Hudson的简单和自由的持续集成.现在我个人不喜欢它的界面,我发现它非常凌乱,我发现几乎没有人谈论CDash - 我喜欢CMake和CTest似乎也很好.
您能否为自己喜欢的持续集成服务器/构建器/测试人员/仪表板提供其强弱决策点的简短描述.
以下是我听说过或使用过的免费(在中小型项目的广义上)的列表:
环境: C++,C#,Python,PHP ......可以是各种各样的.
PS:最好每个工具给出一个答案或对其进行评论已经有一个.
我正在学习构建器模式,到目前为止我了解到,它是用于初始化的常用模式的一个很好的替代方案:
伸缩构造函数模式
JavaBean模式
问题是,我真的不想从我的域模型中的对象中删除getter和setter.我总是喜欢把它们当作POJO.我不喜欢它的原因之一是:如果我不使用POJO,那么在使用ORM框架时注释变量并不容易......
所以这是我的疑惑: - 是否可以在不使用静态内部类的情况下实现构建器模式? - 如果我必须使用内部类来使用构建器模式,你认为保持getter和setter是正确的吗? - 我为练习做了一个小例子,我试图避开内部课程.你能告诉我你怎么看待它?
产品
public class Product
{
private String color;
private int price;
public Product() {
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String toString() {
return getColor() + "\n" + getPrice();
}
}
Run Code Online (Sandbox Code Playgroud)
生成器
public class Builder
{
private Product product;
public Builder() …Run Code Online (Sandbox Code Playgroud) 我使用Flash Builder 4.6编写了一个大型的商业级移动应用程序.在iOS和Android设备上运行时效果很好.
我使用Flash Builder 4.6的试用版来开发此应用程序.我使用了FB内置的状态功能来处理纵向,横向和手机/平板电脑配置.这意味着我在移动应用程序中为我的所有8个视图构建了4种不同的布局.使用FB 4.6中的设计视图是我允许这样做的原因.
我不得不说到目前为止我喜欢Flash Builder.伟大的工具.
我的审判在上周结束了.我不得不购买该软件的4.7版,只是为了发现他们从软件中删除了设计视图.
所有人都抱怨说,与我一样的其他程序员和我做的解决方案是什么?我想继续在AS和Flash Builder中编程,因为我花时间编写应用程序并学习整个平台.
就目前而言,我正在将我的liscence键从4.7降级到4.6,但为了做到这一点,我不得不退回我的零售版FB 4.7 premium(在线购买)并买一卷liscening版本(不是通过adobe,只允许通过CDW等经销商这样做.然后,一旦我有一个4.7到容量liscencing的键,它可以降级到4.6.
我希望能在同一条船上得到别人的意见.你改变了编程语言吗?如果是的话,到底是什么?你改变了IDE吗?如果是这样,到底是什么?
我正在玩Elasticsearch和NEST.
我在理解可用于创建和构建静态查询的各种类和接口时遇到一些麻烦.
这是我想要实现的简化示例:
using Nest;
using System;
using System.Text;
namespace NestTest
{
public class Product
{
public string Name { get; set; }
public int Price { get; set; }
}
public class ProductFilter
{
public string[] IncludeNames { get; set; }
public string[] ExcludeNames { get; set; }
public int MaxPrice { get; set; }
}
class Program
{
static void Main(string[] args)
{
var filter = new ProductFilter();
filter.MaxPrice = 100;
filter.IncludeNames = new[] { "Notebook", "Workstation" }; …Run Code Online (Sandbox Code Playgroud) 我的项目中有很多值对象.
我正在使用项目lombok来消除一些样板,所以我的值对象看起来像下面这样:
@Value
@Accessors(fluent = true)
public class ValueObject {
private final String firstProp;
private final int secondProp;
}
Run Code Online (Sandbox Code Playgroud)
不错,几乎没有样板.
现在,我在测试中经常使用all-args构造函数.它看起来很乱,所以我想我会介绍Builder Pattern变种:
public class ValueObjectBuilder {
private static final int DEFAULT_VALUE_FOR_SECOND_PROP = 666;
private String firstProp = "default value for first prop;
private int secondProp = DEFAULT_VALUE_FOR_SECOND_PROP;
private ValueObjectBuilder() {}
public static ValueObjectBuilder newValueObject() {
return new ValueObjectBuilder();
}
public ValueObjectBuilder withFirstProp(String firstProp) {
this.firstProp = firstProp
return this;
}
public ValueObjectBuilder withFirstProp(int secondProp) {
this.secondProp = secondProp;
return this; …Run Code Online (Sandbox Code Playgroud) 我们使用immutables框架来生成所有DTO.现在我们想用mapstruct将这些对象映射到另一个.但是生成的DTO是不可变的,没有setter,也没有构造函数,对应于构建器模式.它们仅通过static builder()-method 访问的相应构建器填充.
我们试图将DTO1映射到DTO2.Builder,如果mapstruct能识别Builder中的setter但这些没有void返回类型但返回Builder本身以进行流畅的连接,那么它将起作用.
所以这是示例的代码.
我们有两个接口
@Value.Immutable
public interface MammalDto {
public Integer getNumberOfLegs();
public Long getNumberOfStomachs();
}
Run Code Online (Sandbox Code Playgroud)
和
@Value.Immutable
public interface MammalEntity {
public Long getNumberOfLegs();
public Long getNumberOfStomachs();
}
Run Code Online (Sandbox Code Playgroud)
然后我们有了maptruct的Mapper接口:
@Mapper(uses = ObjectFactory.class)
public interface SourceTargetMapper {
SourceTargetMapper MAPPER = Mappers.getMapper( SourceTargetMapper.class );
ImmutableMammalEntity.Builder toTarget(MammalDto source);
}
Run Code Online (Sandbox Code Playgroud)
要使用mapstruct来查找Builder,我们需要一个Factory:
public class ObjectFactory {
public ImmutableMammalDto.Builder createMammalDto() {
return ImmutableMammalDto.builder();
}
public ImmutableMammalEntity.Builder createMammalEntity() {
return ImmutableMammalEntity.builder();
}
}
Run Code Online (Sandbox Code Playgroud)
为了生成代码,编译器插件被指示使用两个注释处理器:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration> …Run Code Online (Sandbox Code Playgroud) 在我的项目中,lombok 用于避免为类编写 getter 和 setter。我有两个类Child扩展Parent:
@Value
@Builder
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class Parent {
@Nonnull
@JsonProperty("personId")
private final String personId;
@JsonProperty("personTag")
private final String personTag;
...
}
Run Code Online (Sandbox Code Playgroud)
和
@Value
@Builder
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class Child extends Parent {
@Nonnull
@JsonProperty("childId")
private final String childId;
...
}
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用,因为Parent. 我不熟悉 lombok 注释。有什么好的方法可以同时扩展Base类并使用lombok注解吗?
如果我将@Builder 添加到一个类中。构建器方法已创建。
Person.builder().name("john").surname("Smith").build();
Run Code Online (Sandbox Code Playgroud)
我有一个要求,其中特定字段是强制性的。在这种情况下,名称字段是必需的。理想情况下,我想这样声明。
Person.builder("john").surname("Smith").build();
Run Code Online (Sandbox Code Playgroud)
在谷歌搜索时,我发现了许多替代方案,例如覆盖构建器实现,如下所示:
@Builder
public class Person {
private String name;
private String surname;
public static PersonBuilder builder(String name) {
return new PersonBuilder().name(name);
}
}
Run Code Online (Sandbox Code Playgroud)
然后像下面这样使用它:
Person p = Person.builder("Name").surname("Surname").build();
Run Code Online (Sandbox Code Playgroud)
上述方法的问题在于它仍然提供如下所示的 name() 和 PersonBuilder() 方法,这是我不想要的:
Person p = Person.builder("Name").surname("Surname").name("").build();
Run Code Online (Sandbox Code Playgroud)
Person p = new Person.PersonBuilder().build;
Run Code Online (Sandbox Code Playgroud)
另一种方法是在 name 处添加 @lombok.nonnull 检查,这将强制在创建对象时为 name 提供值。但它是一个运行时检查。它不会强迫我在创建对象时为 name 提供值。
lombok 是否提供了任何其他技术来实现以下目标:
Person p = Person.builder("Name").surname("Surname").build();
Run Code Online (Sandbox Code Playgroud)
注意: builder() 和 name() 不应暴露。创建 Person 对象的唯一方法应该在上方或下方:
Person p = Person.builder("Name").build();
Run Code Online (Sandbox Code Playgroud) builder ×10
java ×5
lombok ×3
boilerplate ×1
c# ×1
comparison ×1
constructor ×1
dashboard ×1
designview ×1
flash ×1
flutter ×1
hudson ×1
immutability ×1
inheritance ×1
interface ×1
iphone ×1
mapping ×1
mapstruct ×1
nest ×1
static ×1