我有以下java类.当我在构造函数中调用login方法时,我username使用类名访问静态实例变量,password使用关键字访问静态实例变量this.我的问题是这两种方法有什么区别?应该在什么情况下使用哪一个?
public class MyClass {
private Main main;
private static String username = "mylogindetails";
private static String password = "mypassword";
public MyClass(){
this.main = new Main();
this.main.login(MyClass.username, this.password);
}
public static void main(String args[]){
MyClass myclass = new myclass();
}
}
Run Code Online (Sandbox Code Playgroud) 我在我的身上宣布了这个伊娃
ViewController.h
#import <UIKit/UIKit.h>
@interface FirstViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
{
NSArray *sortedCountries;
}
@property (nonatomic, retain) NSArray *sortedCountries;
@end
Run Code Online (Sandbox Code Playgroud)
在ViewController.m中,sortedCountries -(void)ViewDidLoad{}通过存储已排序的.plist的结果来完成它的工作 .
什么时候
-(UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {}
Run Code Online (Sandbox Code Playgroud)
在下面调用,sortedCountries返回 (null)
为什么sortedCountries的值不存在?我retain在第一个函数中添加了一个......我想我在这里缺少一个基本的Objective-C租户.
ViewController.m
#import "FirstViewController.h"
@implementation FirstViewController
@synthesize sortedCountries;
-(void)viewDidLoad {
NSString *path = [[NSBundle mainBundle] pathForResource:@"countries" ofType:@"plist"];
NSArray *countries = [NSArray arrayWithContentsOfFile:path];
NSSortDescriptor *descriptor = [[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES] autorelease];
NSArray *sortedCountries = [[countries sortedArrayUsingDescriptors:[NSArray arrayWithObject:descriptor]]retain];
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView …Run Code Online (Sandbox Code Playgroud) 我正在开发一个ColdFusion动态网站.对于这个网站,每个CFC中都有很多CFC和许多功能. 将CFC实例存储在应用程序变量中,然后在每个页面加载时单独实例化每个CFC会更有效吗?
对于每个页面,最多调用2个单独的CFC.我也对如何在请求增加(压力)时影响性能感兴趣.
谢谢!
我有一个在一个活动上调用的AsyncTask(在一个单独的文件中).当我实例化AsyncTask时,我将活动作为参数发送.如何从AsyncTask的onPostExecute方法访问acitivity的实例变量?
谢谢!
我想问一下C++中哪里是实例化实例变量的正确位置?我认为它不应该在类声明中,但除了面向对象设计不佳之外,我不会看到任何缺点:
class A{ member m; };
我认为最好是这样的:
class A{ extern member m; };
但我不知道如何在没有像这样的指针的情况下实现它:
class A{ member* m };
A::A(){ m = new member; }
是否有"干净的解决方案"在堆栈上实现这一点(不使用指针)?
我正在创建一个名为Configuration的模型,我有以下代码,我想通过使用元编程使其更具动态性.
在配置模型的数据库表中,我有以下数据.
---------------------------------------------------------
variable_name as string | value in text
|
company_name | MyCompany
welcome_text | Welcome to MyCompany's App!
email_order_text | You've just created an account with MyCompany.
year_since | 2012
----------------------------------------------------------
class Configuration < ActiveRecord::Base
#nothing here yet
end
----------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
目前,访问company_name的唯一方法是在rails控制台中执行以下操作:
configuration_company_name = Configuration.find_by_variable_name("company_name")
configuration_company_name.company_name
> "MyCompany"
Run Code Online (Sandbox Code Playgroud)
我认为这是一种不可接受的做事方式.首先,每次有人检查公司名称时,它都会访问数据库.我想如果我可以在应用程序启动时加载它并且不必再次访问它,因为它在内存中,那么它会更好.我怎样才能做更动态的事情,所以我可以像这样访问"MyCompany"这个值.
Configuration.company_name
> "MyCompany"
Run Code Online (Sandbox Code Playgroud)
这样做的原因是允许快速定制应用程序.
我在很多代码中看到的东西:
class Foo
attr_accessor :bar
# lots of code omitted
def baz
'qux' if bar
end
end
Run Code Online (Sandbox Code Playgroud)
baz方法的确切形式并不太重要 - 只是bar这里是对实例变量的getter方法的引用@bar,从实例的类中调用.我倾向于@bar明确地检索值.对此有何意见?我从来没有见过红宝石风格指南或类似的东西.我个人发现,做前者会使阅读和理解变得更加困难,特别是当课程超过几百行时.
编辑:
也许为了说明我认为这个设计的尴尬,让我们重新评估一个非常标准的初始化方法:
class Foo
attr_accessor :bar, :qux
def initialize(bar, qux)
@bar = bar
@qux = qux
end
end
Run Code Online (Sandbox Code Playgroud)
如果我们使用setter方法,我们不能通过bar = ?类比来使用.相反,我们有:
class Foo
attr_accessor :bar, :qux
def initialize(bar, qux)
self.bar = bar
self.qux = qux
end
end
Run Code Online (Sandbox Code Playgroud)
它失去了第一个优雅的一些.我们有一个更灵活的设计,因为我们现在可以自由地重写我们的setter方法并取消它attr_writer.但是我只是在风格方面有一些观点,感觉很像配置而不是相反,而Russ Olsen已经宣称设计'模式'不仅仅是Rails而是Ruby.
在java,java.lang.Systemclass中,它有一个in静态变量.
声明为:public static final InputStream in
this
表示in是一个InputStream varibale.
但是我看到一些例子,
System.in.read()用于读取输入.
怎么能这样做,read()InputStream中的方法不是静态方法,怎么能直接调用呢?据我了解,只有静态方法可以直接由类调用而无需创建实例.
read()声明: public abstract int read() throws IOException
谢谢Jon Skeet的回答,我还有一点不明白.
如果我调用System.in.read()哪个意味着我调用InputStream类方法read()?
java.lang.System.in -----> java.io.InputStream ----> read()
Run Code Online (Sandbox Code Playgroud)
java.lang.System.in(这是一个静态变量),in是一个java.io.InputStream变量PrintStream.read()它应该像这样调用:
PrintStream rd = new PrintStream(); int c = rd.read();
因为read()应该由实例调用.read()声明:public abstract int read()抛出IOException
PS:我试试这段代码不起作用:
InputStream rd = new InputStream();
int c = rd.read();
System.out.println(c);
Run Code Online (Sandbox Code Playgroud)
但不知道为什么.
参考:http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html
我正在研究Ruby Koans,并提出了问题#193:
class Dog2
def set_name(a_name)
@name = a_name
end
end
def test_instance_variables_can_be_set_by_assigning_to_them
fido = Dog2.new
assert_equal [], fido.instance_variables
fido.set_name("Fido")
assert_equal [___], fido.instance_variables
end
Run Code Online (Sandbox Code Playgroud)
答案是"assert_equal : @name,fido.instance_variables".我知道冒号(:)表示符号,atsign(@)表示实例变量.但是,我还没有找到关于结合冒号和atsign意味着什么的文档.
它是什么意思,它是如何使用的?谢谢!
这是我的程序的最后一个代码部分,我不能使它工作:
问题是当我打印出来时,程序使用words实例变量.
如何更改代码,以便我可以在下面的main方法中使用wordList?这是我必须在构造函数中更改的内容吗?
import java.util.Arrays;
public class Sentence {
private String[] words = {""}; // My private instance variable.
//Supposed to hold the words in wordList below.
public Sentence(String[] words){ // Constructor which I'm pretty sure is not 100% right
//Elements of array will be words of sentence.
}
public String shortest() {
String shortest = "";
for (int i = 0; i < words.length; i++) {
if(shortest.isEmpty())
shortest = words[i];
if (shortest.length() > words[i].length())
shortest = words[i]; …Run Code Online (Sandbox Code Playgroud) java ×3
ruby ×3
android ×1
c++ ×1
cfc ×1
coldfusion ×1
constructor ×1
instance ×1
ios ×1
iphone ×1
model ×1
objective-c ×1
performance ×1
scope ×1
stack ×1
symbols ×1
system.in ×1
this-keyword ×1