可以用JAVA创建一个对象,然后立即在同一行上使用setter吗?
如下所示:classname=newclass()
。设置某物(“字符串”);
我如何才能正确地执行此操作,eclipse总是说:
类型不匹配:无法从空转换到类类型
您可以像@Jens所说的那样,使用构建器模式进行类似的操作。
public class Car {
private String brand;
public Car(String brand) {
this.brand = brand;
}
public static class Builder {
private String brand;
public static Builder withBrand(String newBrand) {
Builder builder = new Builder();
builder.brand = newBrand;
return builder;
}
public static Car build() {
return new Car(this.brand);
}
}
}
所以你可以这样叫新车:
Car evoque = new Car.Builder().withBrand("Range Rover").build();
当您有许多属性需要设置,并且不需要大量构造函数时,构建器模式非常有用。
你得到的错误仅仅是因为set某物()
的返回值是无效
。方法是这样的;
public void setSomething(String something){
this.something = something;
}
因为void
不能分配给任何对象,所以不能内联创建对象并对其调用方法。但在将签名更改为以下内容时仍然有可能:
class MyClass{
private String something;
public MyClass setSomething(String something){
this.something = something;
return this; // returning this
}
}
使用返回this
称为方法链接
,主要可以在构建器模式中看到。
虽然上述方法可能有效,但在创建MyClass的实例时,您可能希望始终将某物设置为值。为此,您必须添加一个自定义构造函数,它接受某物
的初始值。例如:
class MyClass{
private final String something;
public MyClass(String something){
this.something = something;
}
}
然后可以像下面这样使用:
MyClass myclass = new MyClass("Something");
后者优于前者。因为这样创建的对象具有值集,不能处于无效状态。(例如,当没有设置东西
时,这可能会导致令人讨厌的NullPointerExc0019
s)。
注意:您可能已经看到,我在声明变量something
时使用了关键字final
。如果您希望以后能够将某些内容更改为不同的值,则可以省略此选项,但如果您保持原样,则创建了一个不可变的
MyClass
实例,该实例通常优于可变实例。
通常,我会这样做: 然而,有没有一种简单的方法可以做到这一点?基本上,类似于:<代码>(窗口)父级。dispose() 还是我总是需要创建一个窗口来存储我的演员?
从文档中可以看出,这在spring-boot-maven-plugin中是不可能的。 所以现在我正在尝试创建一个测试JAR,但是当我运行应用程序类时,我得到了 有没有关于如何在没有maven插件的情况下打包SpringBoot应用程序的文档?
我可以创建一个协议在不同的主机名上运行吗?我一直在使用协议规则,并保持主机名为localhost。但现在我正在尝试为一个不能在localhost上运行的应用程序创建一个协议。 @rule public PactProviderRule provider=new PactProviderRule(“ServiceNowClientrestClientProvider”,“localhost”,808
问题内容: 我想做的是这样的: 不必这样做: 在我的具体情况下,结果对我而言实际上并不重要。但是,有办法吗? 问题答案: 您要求的功能可从PHP 5.4获得。这是PHP 5.4的新功能列表: http://php.net/manual/zh/migration54.new- features.php 以及新功能列表中的相关部分: 添加了对实例化的类成员访问, 例如(new Foo)- > bar(
我有一个名为Card的类,我有一个for循环: 我想做的是基于for循环创建新实例。例如,我希望名字是card1、card2、card3等等。数字来自for循环。 我试过这个,但似乎不起作用: 谁能告诉我我做错了什么吗? 谢谢 所以我正在使用气垫船充满鳗鱼的解决方案,但我还有另一个问题。 我用的是卡片列表。添加(新卡()),当我尝试使用Card(I)设置名称时,java不允许我这么做。在没有i的情
我使用RxJava(聚合服务)编写了一个Spring Boot微服务来实现以下简化用例。大局是当讲师上传课程内容文档时,应该生成并保存一组问题。 用户将文档上载到系统 当用户上载文档时,会从中创建许多问题(可能有数百个左右)。这里的问题是,我正在按顺序发布一个问题,以便CRUD服务保存它们。由于IO密集型网络调用,这会大大降低操作速度,因此完成整个过程大约需要20秒。以下是当前代码,假设所有问题都