小编Jon*_*lor的帖子

用Java链接的方法

虽然我早些时候在这里回答了一些问题,但最近我一直在做的一些工作中,我一直在想为什么Java不支持对其内置类进行方法链接.

Car例如,如果我要创建一个类,我可以通过reutrning 而不是void来使它可链接,this如下所示:

public class Car {
    private String make;        

    public Car setMake(String make) {
        this.make = make;
        return this;
    }   
}
Run Code Online (Sandbox Code Playgroud)

内置库不倾向于以这种方式做事有什么特别的原因吗?方法链是否存在缺点?

我可能忽略了一些可以解释缺少方法链接的东西,但是默认情况下返回void的任何setter方法应该返回对此的引用(至少在我看来应该如此).这将使以下情况变得更加清洁.

container.add((new JLabel("label text")).setMaximumSize(new Dimension(100,200)));
Run Code Online (Sandbox Code Playgroud)

而不是更长时间的啰嗦:注意:如果你愿意,它不会阻止你以这种方式编码.

JLabel label = new JLabel("label text");
label.setMaximumSize(new Dimension(100,200));
container.add(label);
Run Code Online (Sandbox Code Playgroud)

我非常有兴趣听到这个决定背后的原因,如果我不得不猜测会有与此相关的开销,所以只应在需要时使用.

java methods method-chaining chaining

39
推荐指数
3
解决办法
1万
查看次数

在PHP中将静态方法作为参数传递

在PHP中可以做这样的事情:

myFunction( MyClass::staticMethod );
Run Code Online (Sandbox Code Playgroud)

这样'myFunction'将引用静态方法并能够调用它.当我尝试它时,我得到一个"Undefined class constant"(PHP 5.3)的错误,所以我想这不是直接可能的,但有没有办法做类似的事情?我到目前为止最接近的是将"函数"作为字符串传递并使用call_user_func().

php static class

32
推荐指数
4
解决办法
1万
查看次数

连接字符串中的条件运算符

我想知道为什么以下程序会抛出一个NPE

public static void main(String[] args) {
    Integer testInteger = null;
    String test = "test" + testInteger == null ? "(null)" : testInteger.toString();
}
Run Code Online (Sandbox Code Playgroud)

而这个

public static void main(String[] args) {
    Integer testInteger = null;
    String test = "test" + (testInteger == null ? "(null)" : testInteger.toString());
}
Run Code Online (Sandbox Code Playgroud)

没有.这当然是一个优先考虑的问题,我很好奇连接是如何工作的.

java

14
推荐指数
2
解决办法
7557
查看次数

制作一个可以连接另一个蓝牙设备的简单iphone应用程序

我知道一些关于iOS编程的基本知识,现在我想将我的应用程序连接到另一个非iphone设备,例如连接到可以控制灯泡打开和关闭的蓝牙设备,或控制任何家具.

我的问题是,除了iOS xcode,我需要学习什么样的程序才能实现我的目标?

有什么资料可供我学习吗?

iphone xcode bluetooth ios

14
推荐指数
1
解决办法
3万
查看次数

通过代码求解联立方程

这似乎是一个非常简单和愚蠢的问题,但我发现的一切都太复杂了,我无法理解.

我有这两个非常基本的联立方程式:

X = 2x + 2z
Y = z - x
Run Code Online (Sandbox Code Playgroud)

鉴于我知道X和Y,我将如何找到x和z?手动完成它很容易,但我不知道如何在代码中完成.

algorithm math equation

12
推荐指数
1
解决办法
1万
查看次数

"在onCreate()之前,活动无法使用系统服务"错误消息?

当用户点击我的应用程序中的图标时,我希望应用程序首先检查设备是否已连接到互联网,然后根据收到的结果执行某些操作(因为知道它只是弹出一个对话框,通知设备是否是是否连接).所以我写了这段代码:

public class MainActivity extends Activity {

// SOME CONSTANTS WILL BE DEFINED HERE

AlertDialog.Builder builder = new AlertDialog.Builder(this);

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    findViewById(R.id.icoMyIcon).setOnClickListener(listener);
}


private OnClickListener listener = new OnClickListener() {

    public void onClick(View v) {
        if (isNetworkConnected()) {
            builder.setMessage("Internet connected!").setCancelable(false)
            .setPositiveButton("OK", null);
            builder.create().show();
        } else {
            builder.setMessage("Internet isn\'t connected!")
            .setCancelable(false)
            .setPositiveButton("OK", null);
            builder.create().show();
        }

    }
};


// Check if the device is connected to the Internet
private boolean isNetworkConnected() {
    ConnectivityManager cm = (ConnectivityManager) …
Run Code Online (Sandbox Code Playgroud)

methods android oncreate

11
推荐指数
2
解决办法
4万
查看次数

Spring Hibernate Lazy Fetch集合事务无法正常工作

我完全糊涂了,我一直用hibernate创建我的第一个Spring应用程序,当我从数据库中延迟加载对象时,我似乎无法发现我的错误.

我的模型如下

团队课

@Entity
public class Team {

    @Id
    @Column
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;
    @Column
    private String name;
    @Column
    private String description;

    @OneToMany(fetch=FetchType.LAZY , cascade = CascadeType.ALL, mappedBy="team")
    @JsonIgnore
    public List<Person> members;

    //Constructors and setters getters ommited
}
Run Code Online (Sandbox Code Playgroud)

人类

@Entity
@Table(name="`person`")
public class Person {

    @Id
    @Column
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;
    @Column
    private String name;

    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="team")
    @JsonIgnore
    private Team team;

    //omitted constructor and methods
}
Run Code Online (Sandbox Code Playgroud)

然后我有我的数据访问对象,它们都遵循相同的模式

@Repository
public class TeamDaoImpl implements TeamDao {

    @Autowired
    private SessionFactory session;

    @Override
    public …
Run Code Online (Sandbox Code Playgroud)

spring hibernate transactions spring-mvc

10
推荐指数
2
解决办法
2万
查看次数

Java:将"this"作为构造函数参数传递以引用创建对象的替代方法

我已经花了一些时间思考不同的解决方案,因为我已经阅读过(我还没有真正熟悉Java),使用它作为构造函数参数通常不是一个好习惯.

我要做的是实例化JobGroupMod类的几个对象,并且对于每个JobGroupMod,我必须创建一定数量的JobMod对象,这些对象必须能够引用它们已经从中生成的JobGroupMod对象.

为了实现这一点,我将"this"传递给JobMod构造函数,但是,即使工作,它也不像是正确的设计.

public class JobGroupMod implements JobGroup {

    public JobGroupMod(Node n,Set<Job> clusterJobs){
        JobMod j=new JobMod(n,this);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在是JobMod类:

public class JobMod implements Job {
     public JobMod(Node n, JobGroup jg){
         setJobGroup(jg);
     }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,有没有更好的解决方法,或者我的解决方案是建议的方式?

java constructor this

9
推荐指数
2
解决办法
4790
查看次数

哪种方式更快?如果是elseif或select case

对于以下代码,

If Sheets("sheet1").Range("A1").Value = "option_1" Then
    Sheets("sheet1").Range("A1").Value = "option_2"
ElseIf Sheets("sheet1").Range("A1").Value = "option_2" Then
    Sheets("sheet1").Range("A1").Value = "option_3"
ElseIf Sheets("sheet1").Range("A1").Value = "option_3" Then
    Sheets("sheet1").Range("A1").Value = "option_4"
...
End IF
Run Code Online (Sandbox Code Playgroud)

Select Case Sheets("sheet1").Range("A1").Value
    Case Is = "option_1"
        Sheets("sheet1").Range("A1").Value = "option_2"
    Case Is = "option_2"
        Sheets("sheet1").Range("A1").Value = "option_3"
    Case Is = "option_3"
        Sheets("sheet1").Range("A1").Value = "option_4"
    ...
End Select
Run Code Online (Sandbox Code Playgroud)

问题:

1)我想知道哪条路会更快.如果可能的话,技术细节可以解释一下吗?

2)无论效率如何,在这种情况下我应该使用哪种方法,以获得更好的编码.

3)从数组中圈出值的任何其他"简单"方法?

excel vba excel-vba

8
推荐指数
2
解决办法
3万
查看次数

我的Laravel 5.2.10 Sessions不会坚持下去

我有一个全新的Laravel 5安装,事实上我已经在多个版本上尝试了这个并继续遇到同样的问题.

除了将会话驱动程序设置为redis之外,我没有更改默认设置.(基于文件也有同样的问题).

我有两条路线设置如下

Route::get('/set/{value}', function($value) {
    var_dump(Session::getId());
    Session::set('test', $value);
    return view('welcome');
});

Route::get('/get', function() {
    return 'Get ' . Session::get('test');
});
Run Code Online (Sandbox Code Playgroud)

如果我访问url/set/abc,我看到会话出现在REDIS中(我也看到了使用基于文件时创建的文件).会议在REDIS中看起来很好,如下所示

127.0.0.1:6379> KEYS *
 1) "laravel:1a3ae6caff6346e4a173fdc1ab4c6eb0f138806b"
 2) "laravel:fed1af2fb44c6e625953237c3fa6fcbb05366a5c"
 3) "laravel:cb37286ccfe3e7caa20557aca840f50cb5a5f20d"
Run Code Online (Sandbox Code Playgroud)

每次我访问该页面时,它都会重新创建一个新会话.

session.php文件的关键部分如下:

'lifetime' => 120,

'expire_on_close' => false,
Run Code Online (Sandbox Code Playgroud)

我还在REDIS中检查了会话变量的TTL,它们确实在120分钟时初始化(相当于秒).

知道我做错了什么吗?

值得注意的是,我正在使用宅基地vm(完全库存)来测试这一点.我也试过使用多个浏览器.没有cookie被发送到浏览器,我假设会话ID应作为初始get请求的一部分发送到浏览器?

php session session-cookies laravel laravel-5

8
推荐指数
1
解决办法
2848
查看次数