在我们的一些项目中,有一个类层次结构,它在链中向下添加更多参数.在底部,一些类可以有多达30个参数,其中28个只是被传递给超级构造函数.
我会承认,通过像Guice之类的东西使用自动化DI会很好,但由于某些技术原因,这些特定项目仅限于Java.
按类型按字母顺序组织参数的约定不起作用,因为如果某个类型被重构(您为参数2传入的圆现在是一个Shape),它可能会突然出现故障.
这个问题可能具体而且充满了"如果这是你的问题,你在设计层面做错了"的批评,但我只是在寻找任何观点.
是否可以在带有String的方法中使用默认参数.代码如下所示:
public void test(String name="exampleText") {
}
Run Code Online (Sandbox Code Playgroud)
上面的代码生成错误.有可能纠正它吗?
我需要确保没有object属性为null并且如果它为null则添加默认值.有没有简单的方法可以做到这一点,还是我必须通过其getter和setter检查每个属性来手动完成?
Android功能
PHP示例:
function HaHa($a = "Test")
{
print $a;
}
Run Code Online (Sandbox Code Playgroud)
问题是如何在android中做到这一点......
public void someFunction(int ttt = 5)
{
// something
}
Run Code Online (Sandbox Code Playgroud)
上面的解决方案不起作用,我该怎么办?
谢谢!
是否可以在Java中设置默认方法参数值?
示例:如果有方法
public int doSomething(int arg1, int arg2)
{
//some logic here
return 0;
}
Run Code Online (Sandbox Code Playgroud)
是否可以修改给定的方法,以便能够使用和不使用参数调用它?
例:
doSomething(param1, param2);
doSomething();
Run Code Online (Sandbox Code Playgroud)
谢谢!
可能重复:
Java是否支持默认参数值?
有可能做这样的事情
private void function(Integer[] a, String str = "")
Run Code Online (Sandbox Code Playgroud)
就像在PHP中一样.如果我不提供str,它将是空的.在PHP中,它可能在JAVA中给我错误.或者这里唯一的解决方案是创建两个这样的方法?
private void function(Integer[] a, String str)
private void function(Integer[] a)
Run Code Online (Sandbox Code Playgroud) 可能重复: Java是否支持默认参数值?
假设我想在C++中创建默认参数值,那么我们可以表达如下.
void functionName(char *param1, int param2=2);
Run Code Online (Sandbox Code Playgroud)
但是,如果我想用Java制作它,那么它是否可能.目前我正在做如下
public functionName(String param1)
{
this(param1, 2);
}
public functionName(String param1, int param2)
{
..........
}
Run Code Online (Sandbox Code Playgroud) 我必须为类Stamp写一个构造函数.构造函数最多需要五个 String,int和double类型的参数.所以,构造函数看起来像这样:
public Stamp(String code, int year, String country, double value, int numberOfCopies){...}
Run Code Online (Sandbox Code Playgroud)
问题是,由于正在创建Stamp类的对象,因此不能提供所有参数,即,可以将对象声明为
Stamp stamp = new Stamp("some_code", 1991, "Burkina Faso", 50, 1000);
Run Code Online (Sandbox Code Playgroud)
以及
Stamp stamp = new Stamp("some_code", 1991, "Burkina Faso");
Run Code Online (Sandbox Code Playgroud)
并且构造函数必须在两种情况下都工作,即使参数列表被截断(在后一种情况下,一些默认值被赋值给value和numberOfCopies).当然,我可以编写六个构造函数(对于可能的参数数量,从0到5,假设参数始终遵循上述顺序,而不会混淆),但应该有更聪明的方法.我知道我可以声明构造函数
public Stamp(Object[] params){...}
Run Code Online (Sandbox Code Playgroud)
然后将params元素转换为相应的类.这可能会有效,但我总是要检查使用"if"条件为构造函数提供了多少参数,以便决定是否在未提供相应参数的情况下为变量分配默认值,或者使用提供的值(如果是给出.这一切看起来都很难看.因此,问题很简单:如果提供的参数列表长度不同且参数类型不同,构建构造函数(或其他方法)的方法是什么?
我面临改造对象字段的问题。例如:我有对象名称标准,它有20 个字段,不,我只想在 API 调用时发送前4 个字段,其余所有字段在 api 调用时都应该被忽略。
以下是我的对象:
public class Criteria {
@SerializedName("mlsp_id")
@Expose
private String mlspId;
@SerializedName("listing_key")
@Expose
private String listing_key;
@SerializedName("limit")
@Expose
private String limit;
@SerializedName("add_to_log")
@Expose
private Integer addToLog;
@SerializedName("location")
@Expose
private String location;
@SerializedName("property_type")
@Expose
private List<String> propertyType = null;
@SerializedName("price")
@Expose
private Price price;
@SerializedName("beds")
@Expose
private Beds beds;
@SerializedName("baths")
@Expose
private Baths baths;
@SerializedName("floor_area")
@Expose
private FloorArea floorArea;
@SerializedName("lot_size")
@Expose
private LotSize lotSize;
@SerializedName("year_built")
@Expose
private YearBuilt yearBuilt; …Run Code Online (Sandbox Code Playgroud) android android-studio retrofit android-api-levels retrofit2
java ×9
methods ×3
parameters ×2
android ×1
arguments ×1
constructor ×1
default ×1
null ×1
overloading ×1
php ×1
retrofit ×1
retrofit2 ×1
variables ×1