我知道你不允许从案例类继承,但是你真的需要的时候会怎么做?我们在层次结构中有两个类,它们都包含许多字段,我们需要能够创建两个类的实例.这是我的选择:
我该怎么办?这不是一个常见的问题吗?
假设你创建一个使用生成器模式的人一个类名,并假设生成器类包含的方法body()
,head()
,arms()
当然build()
,你考虑的方法head()
,并build()
为这个类的用户必须的.
我们想以某种方式标记这些方法是强制性的,如果可能的话使用注释.如果这个类的用户试图构建一个Person实例但是忘了调用这些方法中的任何一个,我们希望得到某种警告 - 无论是来自java编译器,还是来自我们用来构建我们的Eclipse或Maven项目 - 他们中的任何一个都可以.
有可能吗?你会建议哪种方式?
我想when()
在Kotlin中使用一个表达式来从函数中返回不同的值.输入是a String
,但它可能是可解析的Int
,所以我想Int
在可能的情况下返回解析,或者String
如果不是,则返回.由于输入是一个String
我不能使用是类型检查表达式.
有没有惯用的方法来实现这一目标?
编辑:我的问题是when()
表达式应该是什么样子,而不是关于返回类型.
在我的项目中,我们使用RestEasy创建REST接口,并使用Swagger来记录它们.问题是这需要许多注释,可能如下所示:
@ApiOperation(value = "Create a person object",
notes = "Create a person object" +
"Return the newley created person object",
response = Person.class)
@ApiResponses({
@ApiResponse(code = HttpStatus.SC_INTERNAL_SERVER_ERROR, message = "Internal server error"),
@ApiResponse(code = HttpStatus.SC_UNAUTHORIZED, message = "Unauthorized"),
@ApiResponse(code = HttpStatus.SC_PRECONDITION_FAILED, message = "Precondition failed"),
@ApiResponse(code = HttpStatus.SC_BAD_REQUEST, message = "Bad request"),
@ApiResponse(code = HttpStatus.SC_UNPROCESSABLE_ENTITY, message = "Unprocessable entity")
})
@POST
@Path("rest/v1/persons")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
Person createPerson(
@HeaderParam("SecurityToken") String token,
@ApiParam(value = "person", defaultValue = "{ \"name\": …
Run Code Online (Sandbox Code Playgroud) 我想用sbt 0.11.0创建一个Vaadin项目.我查看了sbt-vaadin-plugin和vaadin-skeleton,但它们似乎都已过时了.那么,有没有人提供如何配置这样一个项目的技巧?
我正在使用Casbah和Salat来创建我自己的Mongodb dao并且正在实现这样的getAll方法:
val dao: SalatDAO[T, ObjectId]
def getAll(): List[T] = dao.find(ref = MongoDBObject()).toList
Run Code Online (Sandbox Code Playgroud)
我想知道的是:
我正在http://learnyouahaskell.com/starting-out上关注(优秀的)Haskell教程,并尝试使用正确的三角形示例:
> let triangles = [(a,b,c) | c <- [1..10], b <- [1..10], a <- [1..10], a^2 + b^2 == c^2]
Run Code Online (Sandbox Code Playgroud)
按照预期运行我得到的:
> triangles
[(4,3,5),(3,4,5),(8,6,10),(6,8,10)]
Run Code Online (Sandbox Code Playgroud)
现在,我想尝试使用无限列表:
> let triangles = [(a,b,c) | c <- [1..], b <- [1..], a <- [1..], a^2 + b^2 == c^2]
Run Code Online (Sandbox Code Playgroud)
但是当我尝试它时,像:
> take 2 triangles
Run Code Online (Sandbox Code Playgroud)
...程序只运行并运行,没有输出.我究竟做错了什么?我认为Haskells懒惰会导致它找到两个第一个三角形然后停止?
受Adam Bien的博客启发,我想用Java 8将Java 7中的常见迭代替换为更好的迭代.旧代码如下所示:
void repeatUsingJava7(int times) {
for (int i = 0; i < times; i++) {
doStuff();
doMoreStuff();
doEvenMoreStuff();
}
}
Run Code Online (Sandbox Code Playgroud)
......这不太好.所以我用Adam Bein的例子替换它:
void repeatUsingJava8(int times) {
IntStream.range(0, times).forEach(
i -> {
doStuff();
doMoreStuff();
doEvenMoreStuff();
}
);
}
Run Code Online (Sandbox Code Playgroud)
...这是朝着正确方向迈出的一步,但不会使代码更易于阅读,还会引入一个不需要的变量i
,以及一对额外的花括号.所以现在我想知道是否有其他方法来编写这个代码,这将使它更好,更容易阅读,主要是使用Java 8.
我的Zeppelin笔记本中有一组图表,可以使用jdbc插入器在一段时间内从数据库中获取数据。我想做的是能够选择一个适用于所有图表的时期。
我看到有人可以使用动态表单甚至使用Angular的日期选择器来创建输入字段(这会更好)。是否有可能以某种方式在jdbc插入器中使用所选时间段?
在“ 应用Zeppelin动态表单”中给出的示例中,我可以看到如何在一个图表中完成此操作,但这不是我想要的:能够定义一个会影响所有图表的字段。
我按照https://golang.org/doc/code.html#Library中的说明操作并尝试使用Goland.虽然我找不到快速安装我正在编写的库的方法,但我很惊讶.根据教程,您应该使用install
在pkg或bin文件夹中安装代码,但除了在控制台中编写代码之外,我无法在Goland中找到这样做的方法.我错过了什么?
免责声明:我是node.js/grunt/bower新手.
我有一个node.js/grunt/bower应用程序,我正在尝试在Heroku上部署.Heroku按预期构建应用程序,但随后它尝试运行"npm start",我没有在package.json文件中指定.这个命令失败了,我猜是因为它不是服务器应用程序,我看不到在Heroku上部署的实际应用程序.我的应用程序可以在这里找到:https://github.com/uzilan/sufusku
那么 - 我如何让Heroku不要运行"npm start"命令,它应该运行什么呢?运行grunt构建后,应用程序在dist文件夹中可用.
的package.json:
{
"name": "sufusku",
"version": "0.0.1",
"description": "Sufusku - makes your annoying sudoku easier",
"repository": {
"type": "git",
"url": "git://github.com/uzilan/sufusku.git"
},
"license": "(MIT OR Apache-2.0)",
"dependencies": {
"bower": "^1.4.1",
"grunt": "0.4.5",
"grunt-cli": "0.1.13",
"grunt-contrib-clean": "^0.6.0",
"grunt-contrib-concat": "^0.5.1",
"grunt-contrib-connect": "^0.11.2",
"grunt-contrib-copy": "^0.8.0",
"grunt-contrib-cssmin": "^0.13.0",
"grunt-contrib-htmlmin": "^0.4.0",
"grunt-contrib-uglify": "^0.9.1",
"grunt-contrib-watch": "^0.6.1",
"grunt-ng-annotate": "^1.0.1",
"load-grunt-config": "^0.17.2",
"time-grunt": "^1.2.1"
},
"devDependencies": {},
"engines": {
"node": ">=0.8.0"
},
"scripts": {
"postinstall": "./node_modules/bower/bin/bower install && grunt …
Run Code Online (Sandbox Code Playgroud) 我正在Exercism中的Scala轨道上工作,这意味着我在根文件夹中有很多SBT项目。我想创建一个根SBT项目,该项目将在我下载新练习时自动添加新的子项目。目前,我必须手动添加它们,因此我的根目录build.sbt
如下所示:
lazy val root = (project in file("."))
.aggregate(
hello_world,
sum_of_multiples,
robot_name)
lazy val hello_world = project in file("hello-world")
lazy val sum_of_multiples = project in file("sum-of-multiples")
lazy val robot_name = project in file("robot-name")
Run Code Online (Sandbox Code Playgroud)
...但是我想避免必须手动添加每个项目。有没有办法自动添加新项目?