我面临改造对象字段的问题。例如:我有对象名称标准,它有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
我不是很喜欢Hibernate和Spring Data JPA,我有以下疑问.
我有这个方法签名正确执行查询:
@Repository
public interface AccomodationMediaDAO extends JpaRepository<AccomodationMedia, Long> {
AccomodationMedia findByIdAccomodationAndIsMaster(Long accomodationId, boolean isMaster);
}
Run Code Online (Sandbox Code Playgroud)
它找到(在AccomodationMedia实体类映射的表上)具有名为idAccomodation的字段的单个记录,该字段设置有由accomodationId方法参数表示的Long值,并且字段isMaster由isMaster布尔值重新呈现.
它工作正常,但我的"问题"是这样做我总是显式传递布尔值isMaster参数的值.
此参数必须始终设置为true,所以我尝试以这种方式更改以前的方法签名:
AccomodationMedia findByIdAccomodationAndIsMaster(Long accomodationId, true);
Run Code Online (Sandbox Code Playgroud)
但IntelliJ显示错误:标识符或预期类型.
为什么?我可以设置必须将此参数的值显式设置为true布尔值吗?
我有一些 C++ 代码的 Java 包装器,在其中我通过手动重载相关方法来模拟默认参数。[示例如Java 是否支持默认参数值?.] 在一种情况下,C++ fn 有 3 个可选参数,因此我必须用 Java 编写 8 个方法。
现在我想为所述方法编写JavaDocs。有什么办法可以避免将基本相同的文本写 8 次吗?除了冗长之外,这将是一场维护噩梦......
编辑:这是一个玩具示例,说明了方法的签名:
void foo(int i, String s, double d);
void foo(int i, String s);
void foo(int i, double d);
void foo(int i);
void foo(String s, double d);
void foo(String s);
void foo(double d);
void foo();
Run Code Online (Sandbox Code Playgroud) 我想创建一个方法,需要1个必需参数和1个可选参数,但我发现如何通过在参数(int ... b)中创建一个可选数组,但这是一个数组,我想制作它只是这个值为null或用户输入它,我可以通过制作两个相同名称的方法,但一个具有单个参数和一个具有2个参数,但是它可以只使用一个方法吗?
谢谢
java是否支持具有默认值参数的构造函数,例如
public Shape(int v=1,int e =2){vertices =v;edges = e; }
Run Code Online (Sandbox Code Playgroud) 假设以下示例-执行后返回-“父亲”
trait Action {
def doSomething(s:String = "father") = s
}
class RevokeAction extends Action{
override def doSomething(s:String) = {
s + s
}
}
object HelloWorld {
def main(args: Array[String]): Unit = {
val revokeAction = new RevokeAction()
revokeAction.doSomething()
}
}
Run Code Online (Sandbox Code Playgroud)
查看编译器的功能-更好地说明正在发生的事情
package <empty> {
abstract trait Action extends Object {
def doSomething(s: String): String = s;
<synthetic> def doSomething$default$1(): String = "father";
def /*Action*/$init$(): Unit = {
()
}
};
class RevokeAction extends Object with Action {
<synthetic> …Run Code Online (Sandbox Code Playgroud) 我喜欢不变性的概念.我也喜欢no nulls的概念(如果可能的话,也没有NullDesignPattern,尽可能没有NullObjects).
但是下面的场景呢:
我有一个对象User,它有两个字段:birthday和dateInLifeMarried(可以是任何类似的字段;重要的是,这个字段最初是null在对象生命中的某个点上改变).
由于它是不可变的,我希望两个字段都在构造函数中:
public User(birthday, dateInLifeMarried)
Run Code Online (Sandbox Code Playgroud)
现在:
null给第二个参数null我只是自相矛盾,还是有一种优雅的方式来拥有它,我没有想到的?
这是我学习 Java 的第一周,我想知道如何为方法或构造函数设置默认参数。
例如,在 Python 中,它看起来像这样: def test_function(a=None, b, c=1):
在Java中有什么办法可以做到这一点吗?
我正在尝试为一个接受一个ArrayList(包含整数)作为其中一个参数的类编写一个构造函数.稍后实例化此类时,我将传递一个适当的,预先填充的值列表,因此我不想在构造函数中创建一个空列表.
不幸的是,当我尝试编译下面的代码时,Java吐出了五个错误,都与第23行(我的构造函数的函数定义)有关.任何意见,将不胜感激:
/*
* SumGenerator
*
* @author James Scholes
*/
import java.util.ArrayList;
import java.util.Random;
public class SumGenerator
{
// Some initial variables
public int timesTable;
public int multiple;
/*
* Constructor
*
* @param timesTable(int): The times table to use for sum generation
* @param limit(int): The highest multiple to use in sum generation
* @param previousMultiples(ArrayList<Integer>): The previously used multiples to avoid sum duplication
*/
public SumGenerator(int timesTable, int limit = 10, ArrayList<Integer> previousMultiples)
{
this.timesTable = timesTable; …Run Code Online (Sandbox Code Playgroud) 我创建了一个简单的类来表示 x、y 坐标。它有一个封装的 int 和以下构造函数:
//point.h
Point(int x = 3, int y = 5); // not zero for example purposes
//point.cpp
Point::Point(int x, int y) : x(x), y(y) {}
Run Code Online (Sandbox Code Playgroud)
然后我有一个文件main.cpp:
#include "point.h"
#include <iostream>
int main() {
Point p;
std::cout << "x: " << p.getX() << " y: " << p.getY() << std::endl;
p.setX(7);
p.setY(9);
std::cout << "x: " << p.getX() << " y: " << p.getY() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
来自 Java 背景,我预计这会产生一个空指针,但它却打印:
x: 3 y: 5
x: …Run Code Online (Sandbox Code Playgroud) java ×8
constructor ×3
android ×1
arraylist ×1
arrays ×1
c++ ×1
core ×1
immutability ×1
javadoc ×1
jpa ×1
methods ×1
null ×1
oop ×1
parameters ×1
retrofit ×1
retrofit2 ×1
scala ×1
spring ×1
spring-data ×1