所以,我有一个表示Input类型对象的抽象类 -
public abstract class Input<E>
Run Code Online (Sandbox Code Playgroud)
我有两个扩展它的类,一个是ButtonInput,另一个是TextInput.两者都扩展了输入,所以它并不重要.我将使用TextInput来解释.
这是TextInput类的防御:
public class TextInput extends Input<TextInput>
Run Code Online (Sandbox Code Playgroud)
我想要做的是将其作为E(在这种情况下为TextInput)返回 -
public E setTextColor(Color color) {
this.colorText = color;
return (E)this;
}
Run Code Online (Sandbox Code Playgroud)
所以,如果我打电话给例如:
new TextInput().setColor(Color.black)
Run Code Online (Sandbox Code Playgroud)
它应该返回TextInput.它正在工作,但它显示以下警告 -
警告:[未选中]未选中强制转换
(E)此; required:E
found:输入
E是一个类型变量:
E扩展在类Input中声明的Object
关于以下代码行 -
return (E) this;
Run Code Online (Sandbox Code Playgroud)
有人知道怎么解决吗?
谢谢
所以......我正在使用Gin框架为我的想法创建一个RESTful API,我遇到了以下问题 - 让我们说我有以下端点:
/a/:id/*action
/b/:id/*action
/c/:id/*action
所以,显然,当我没有给出任何动作时,我想返回给定ID的数据.意思是,我只是查询一些数据并返回它,这意味着功能基本相同,只返回的数据不同.
这是我的一个示例代码 -
func GetBusiness(c *gin.Context) {
businessID, err := strconv.Atoi(c.Param("id"))
if businessID == 0 || err != nil {
c.JSON(http.StatusBadRequest, gin.H{"success": false, "errorMessage": "Missing ID"})
}
business := &Business{}
business, err = business.Get(businessID)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"success": false, "errorMessage": "Business not found"})
}
c.JSON(http.StatusOK, business)
}
Run Code Online (Sandbox Code Playgroud)
因此,显然,业务可以成为用户或其他任何东西.所以,经过长时间的阐述,我向你的观众提出的问题是,如何在这种情况下防止代码重复?我已经尝试过使用界面,但我仍然在努力解决围棋的OO性质,所以我真的很喜欢任何帮助.
提前致谢!
出于某种原因,当我删除fmt.Printlns然后代码阻塞.我不知道为什么会这样.我想要做的就是实现一个简单的并发限制器......
我从来没有经历过这么奇怪的事情.这就像fmt冲刷变量或其他东西并使其工作.
此外,当我使用常规函数而不是goroutine时,它也可以工作.
这是以下代码 -
package main
import "fmt"
type ConcurrencyLimit struct {
active int
Limit int
}
func (c *ConcurrencyLimit) Block() {
for {
fmt.Println(c.active, c.Limit)
// If should block
if c.active == c.Limit {
continue
}
c.active++
break
}
}
func (c *ConcurrencyLimit) Decrease() int {
fmt.Println("decrease")
if c.active > 0 {
c.active--
}
return c.active
}
func main() {
c := ConcurrencyLimit{Limit: 1}
c.Block()
go func() {
c.Decrease()
}()
c.Block()
}
Run Code Online (Sandbox Code Playgroud)
澄清:尽管我接受了@kaedys的回答(这里 …
我的 API 中有一个端点,需要一些时间才能返回响应(>1 分钟)。
我已将 API 部署到 Elasticbeanstalk,现在当我尝试访问它时,我从 Nginx 收到 504 网关超时
<html>
<head><title>504 Gateway Time-out</title></head>
<body>
<center><h1>504 Gateway Time-out</h1></center>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?