我是Java的新手,从Python和PHP,我习惯了函数参数的默认值.
所以我养成了编写方法的习惯,这些方法旨在从稍微不同的情况调用,你只想设置一些值.例如,在我的PHP代码中,这种情况很常见,因为我有工厂方法为对象实例提供稍微不同的属性.
在Java中,似乎我必须有一个方法需要所有参数,然后是几个重载的变量,这些变量将调用该方法,其中一些参数设置为默认值,一些参数由调用者提供.哪,好吧,好吧,但有时会让我紧张.
我记得在C++和ActionScript的一些简短的短途旅行中,这已经让我烦恼了.现在,更有经验的Java开发人员有这方面的一些捷径吗?
在我看来,从技术上讲,这个问题已被所有帖子的总和所回答为"是的,它是".我在下面打开了一个wiki帖子来收集各种替代解决方案,如果您愿意,请提供帮助.我发现所有这些都非常有用,可以作为典型Java构造的灵感和学习示例.
我应该经常依赖默认值吗?
例如,在PHP中,如果您有以下内容:
<?php
$var .= "Value";
?>
Run Code Online (Sandbox Code Playgroud)
这非常好 - 它有效.但是,如果将这样的赋值转换为以前未使用的变量后来从语言中消除了怎么办?(我不是指对未使用的变量的一般赋值.)
有无数的例子表明某些东西的默认值已经发生了变化,而现有的代码却没用了.
另一方面,没有默认值,会有很多代码冗余.
处理这个问题的正确方法是什么?
所以我正在创建一个检测两个精灵之间碰撞的函数,并希望添加两个缓冲区作为可选参数,以填充每个对象碰撞的边的角度.
但是这意味着两个buff参数必须是引用,并且无论何时调用函数都必须存在,并且我不知道有什么方法可以创建默认引用.我怎样才能做到这一点?
这是实际的功能:
bool CheckCollision(T* obj1, T* obj2, float& CollBuff1= new float, float& CollBuff2= new float);
Run Code Online (Sandbox Code Playgroud)
我尝试使用'new'进行默认设置,但它不起作用.
默认情况下,当Web应用程序启动时,它将以roo生成的主页开始,其中视图名称为"index"
假设我使用以下命令添加新的自定义控制器,
web mvc controller ~.web.ViewHomeController --preferredMapping /homepage1
Run Code Online (Sandbox Code Playgroud)
它生成以下代码,
@RequestMapping("/homepage1/**")
@Controller
public class ViewHomeController {
@RequestMapping
public void get(ModelMap modelMap, HttpServletRequest request,
HttpServletResponse response) {
}
@RequestMapping(method = RequestMethod.POST, value = "{id}")
public void post(@PathVariable Long id, ModelMap modelMap,
HttpServletRequest request, HttpServletResponse response) {
}
@RequestMapping
public String index() {
return "home/homepage1";
}
}
Run Code Online (Sandbox Code Playgroud)
我希望"home/homepage1"页面成为Roo应用程序启动时显示的默认页面.
我可以获得一些指导/详细信息,我需要进行一些更改,以启用"home/homepage1"作为我的应用程序的默认主页.
提前感谢您的帮助.我使用的是最新版本的Spring ROO,1.1.4.
谢谢
我正在尝试将现有列"time_sent"更改为默认为插入期间的时间.我的SQL是:
ALTER TABLE `email_history` alter `time_sent` set DEFAULT CURRENT_TIMESTAMP
Run Code Online (Sandbox Code Playgroud)
我收到这个错误但是:
MySQL said:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURRENT_TIMESTAMP' at line 1
Run Code Online (Sandbox Code Playgroud)
我已经阅读了文档和其他(类似但不完全相同)的示例,但没有运气.
我的MySQL版本是5.0.67.
我是Rails的入门开发人员,我正在使用Ruby 1.8.7和Rails 3.0.3开发的应用程序的系统研究.在我的应用程序,我有application_controller与application.html.erb布局和home_controller与home_html.erb与CRUD意见一起布局.然后在我的routes.rb中,默认路由设置如下,以及home的资源路由.
root:to =>'home #index'
资源:家
在application.html.rb中,我们有一个默认的布局要在其中呈现,其中需要使用<%= yield%>插入其他视图.但我有另一个名为home.html.erb的布局,其内容与application.html.erb的内容相同.当我运行应用程序时,默认布局是从home.html.erb而不是application.html.erb加载的.可能是什么原因?
我想用OpenMP对c ++代码进行parallalize.代码并不是很简单,但在我看来,并行化并不难,因为我有一个独立系统的集合,我想要对包含系统的std :: vector的for循环进行分析.
ensamble的维度是DIM_ENSEMBLE
这是代码的有趣部分,我尝试并行化.这当然不起作用.
vector<Systems> system(DIM_ENSEMBLE);
vector<double> current(100);
Run Code Online (Sandbox Code Playgroud)
System是一个包含一些std :: vector的结构
/* do things
...
*/
while (time < T){
/*154*/ #pragma omp parallel for default(none) shared(r, DIM_ENSEMBLE, system, current) private(i, max_rate, time_increment, R, j, status)
for (i =0; i< DIM_ENSEMBLE; i++) {
max_rate = function_A_of(i);
time_increment = function_B_of(r,max_rate);
R = function_C_of(r,max_rate);
j = function_D_of(System, i, R);
status = update_the_system(&system[0], i, time_increment, j, ¤t[0]);
if (status!=1) {
#pragma omp critical
{
/*173*/ cout << "ERROR " << i …Run Code Online (Sandbox Code Playgroud) 我会更改Android 4.4.2上的默认短信应用程序
我用这个代码:
Intent sendIntent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
sendIntent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, context.getPackageName());
startActivity(sendIntent);
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?我怎么能要求用我的应用程序更改默认的短信应用程序?
我的接收者:
<receiver android:name="receiver.SMSHandlerReceiver"
android:permission="android.permission.BROADCAST_SMS" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_DELIVER" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
谢谢.
我想将默认值设置为DateTimeOffset - 它不应该是DateTime.Now而是DateTime.MinValue或default(DateTime)
有什么想法我该怎么办?这段代码:
DateTimeOffset d = new DateTimeOffset(DateTime.MinValue)
Run Code Online (Sandbox Code Playgroud)
抛出一个例外
是否可以为所有Symfony FormType设置默认值?
我们目前正在开发基于Symfony(3.3)的API后端。在前端,我们将实体作为对象,如下所示:{"id": 1, "username": "foo" ..... }
如果我们想更新实体,我们将对象JSON.stringfy并将其发送到服务器。
但是,如果我们通过将请求绑定到我们的实体,$form->submit($request)
则会收到错误消息(“此表单不应包含额外的字段。”),因为我们在FormTypes中没有(也不想使用!)“ id”。
所以我们必须在每个FormType中都设置allow_extra_fields为true
public function setDefaultOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(['allow_extra_fields' => true]);
}
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以将其配置为所有FormType的默认值(而无需扩展自定义FormType或类似的东西)?