我是Android开发的新手.
我要开始一个新的活动.通常,我会写下面的代码:
Intent i = new Intent(Activity1.this, Activity2.class);
Activity1.this.startActivity(i);
Run Code Online (Sandbox Code Playgroud)
但现在我需要从该活动的实例开始一个新活动(因为我不想启动该类型的泛型活动,我需要调用他的构造函数来定义他的属性).像这样的东西:
Activity2 instance = new Activity2(parameters);
Intent i = new Intent(Activity1.this, instance);
Activity1.this.startActivity(i);
Run Code Online (Sandbox Code Playgroud)
可能吗?
就我而言,实现者应该能够“更新”一个对象。
//creating an instance (follows the active record pattern)
SameClass myObject = SameClass.find(123,params);
//myObject gets replaced by the output of the web api inside, but it feels like an update for the implementator
myObject.update("ask the web api to paint it black");
Run Code Online (Sandbox Code Playgroud)
但是,在类内部,我还没有弄清楚如何立即替换所有属性。这种方法行不通,但是也许还有其他机会可以解决它:
public void update(String newParams) {
//Can't replace "this" (that call returns an instance of "SameClass")
this = ConnectionFramework.getForObject(SameClass.class,"some url",newParams);
}
Run Code Online (Sandbox Code Playgroud)
实际上,“ ConnectionFramework”是适用于Android的Spring RestTemplate。未简化的版本是:
public void update(HashMap<String,String> params) {
SameClassResponse response = restTemplate.getForObject(ENDPOINT+"/{id}.json",SameClassResponse.class, params);
this = response.getSameClass(); …Run Code Online (Sandbox Code Playgroud) 我写了perl类,但我不知道如何在我的$this变量中有一个数组或一个哈希?
我有一个pack.pm:
#!/usr/bin/perl -w
use strict;
use Parallel::ForkManager;
package Pack;
our $cgi = new CGI;
sub new {
my ($classe, $nom, $nbports, $gio) = @_;
my $this = {
"nom" => $nom,
"nbports" => $nbports,
"gio" => $gio
};
bless($this, $classe);
return $this;
}
...
1;
Run Code Online (Sandbox Code Playgroud)
我想有一个@tab,我可以通过访问$this->tab,但我不想在arg中给它实例.
它在Perl中如何工作?
谢谢.
在PHP 5.2.x中,mySQL 5.x
我有一个问题包围我应该和不应该是PHP中的一个类的实例,因为它们在呈现页面后不是持久的.
说我有一个评论列表.对我来说,每个评论都是它自己的对象是有道理的,因为我可以对它们调用动作,并且它们拥有属性.如果我用另一种语言(一种具有持久状态且可以与之交互的语言)这样做,我会这样做.
但这似乎很浪费,因为要做到这一点,我有一个调用new()的循环,这可能意味着我需要为每个实例访问数据库(也很糟糕).
但也许我错过了一些东西.
Php在我对类和对象的看法上似乎有所不同.什么时候应该是一个类实例,什么时候不是?
我对访问者模式有点不友好,但我有一个需要访问者实现的任务(如果我想避免"instanceof"检查).
我有一个类,它是几个gwt元素的包装:Label,Panel,Widget(可以是复选框,列表框,文本框等).我使用数组作为UI的相似部分的集合.例如Label +复选框,Label +文本框; 标签+按钮等
一些元素以不同的方式构造(从例如Panel派生的另一个类的一部分).因此,我有两个相同的构造函数,但在一个地方使用重载方法.我可以合并这些构造函数并使用上面提到的方法中的"instanceof"检查元素.但我不喜欢这个解决方案,并希望使用访问者模式替换它.说实话,我不知道该怎么做,希望对你有所帮助.
这是我的一个例子:
public class MyWidgets {
private String stringLabel;
private Widget widget;
private Panel panel;
public MyWidgets(String stringLabel, Widget widget) {
this.stringLabel = stringLabel;
this.widget = widget;
initPanel(stringLabel, widget);
}
public MyWidgets(ConstructedClass cs, Widget widget) {
this.widget = widget;
initPanel(cs, widget);
}
private initPanel(String label, Widget widget) {
panel = SomeStaticUtilityClass.initPanel(new Label(label), widget);
}
private initPanel(ConstructedClass cs, Widget widget) {
panel = SomeStaticUtilityClass(cs, widget);
}
}
Run Code Online (Sandbox Code Playgroud)
像这样的东西(我试图让它最大化抽象,实际上它更难).
所以我有一个使用"instanceof"的解决方案:
private initPanel(Object object, Widget widget) {
if(object …Run Code Online (Sandbox Code Playgroud) 所以,我想要做的是,使用fxml创建一个自定义元素,然后将该元素的几个实例添加到容器中,如GridPane."new"运算符对我不起作用,因为我想使用@fxml注释器来访问该元素.克隆会很好,但它不起作用.当在for()contruct中使用添加许多元素时,FXMLLoader非常慢.如果我可以写一个fxml parentnode的引用,它可以从控制器调用,那将是完美的.
对不起...这里伪...
public class Controller implements Initializable {
@FXML
private VBox stack;
@FXML
private Button button;
@FXML
private void Change(KeyEvent event) throws IOException {
for (int i=0; i<10; i++){
stack.getChildren().add(button);
}
}
}
Run Code Online (Sandbox Code Playgroud)
将THE按钮添加到VBox是没有问题的.但是在for-contruct中(添加多于一个按钮)它失败了.我可以在for构造中使用new运算符,但我想知道,如果这是唯一的可能性.我认为必须有另一种方式,例如使用@FXML注释器"获取"按钮然后复制它.
我已经使用该main方法创建了以下类,该方法创建了新的实例Application和实例ApplicationModel,ApplicationView并ApplicationController为此特定Application.
public class Application
{
// Variables
private ApplicationSettings settings;
private ApplicationModel model;
private ApplicationView view;
private ApplicationController controller;
// Constructor
public Application()
{
settings = new ApplicationSettings();
model = new ApplicationModel();
view = new ApplicationView(model);
controller = new ApplicationController();
}
// Main method
public static void main(String[] args)
{
Application application = new Application();
}
// Getters for settings, model, view, controller for instance of Application
} …Run Code Online (Sandbox Code Playgroud) 鉴于a Class<?> superType和a Object subInstance,它们之间有什么区别
superType.isInstance(subInstance)
Run Code Online (Sandbox Code Playgroud)
和
superType.isAssignableFrom(subInstance.getClass())
Run Code Online (Sandbox Code Playgroud)
(如果有的话)?
我在我的ColdFusion开发人员版本上创建了一个多实例设置.我在Maverics上运行.我对这个过程的指南是Rob Brooks-Bilson的这篇文章.
我做的一切都很对.但是,当我尝试ping ColdFusion Administrator时,我收到"Bad Gateway Error".
我偶然注意到,在Python 2.7和3.5中,从大型数据文件生成类的简单程序运行速度要快得多.我在这里读到,使用"无限精度"整数归咎于简单枚举的减速,但即使我尝试实例化这个类的简单测试,我发现Python 3明显变慢:
class Benchmark(object):
def __init__(self):
self.members = ['a', 'b', 'c', 'd']
def test():
test = Benchmark()
if __name__ == '__main__':
import timeit
print(timeit.timeit("test()", setup="from __main__ import test"))
Run Code Online (Sandbox Code Playgroud)
我想也许这与每个类实例的大小有关,但Python 3实例小于2(56对64)
$python3 benchmarks.py
0.7017288669958361
$python benchmarks.py
0.508942842484
Run Code Online (Sandbox Code Playgroud)
我已尝试过很多关于这个主题的变体,包括在不同的机器上使用3.4,并且仍然得到相同的结果.有什么想法发生了什么?
instance ×10
class ×4
java ×4
oop ×2
android ×1
building ×1
coldfusion ×1
constructor ×1
fxml ×1
gateway ×1
gwt ×1
javafx-2 ×1
perl ×1
php ×1
polymorphism ×1
python ×1
python-3.x ×1
variables ×1