javaapply
Ⅰ 為啥我的java更改jdk頁面沒有apply按鈕
這是myeclipse,軟體版本問題。無需糾結。
Ⅱ eclipse 中 apply和Restore Defaults是什麼意思
apply:應用,比如設置了某些功能的改變,就可以apply
Restore Defaults:恢復默認,如果想把發動過的設置恢復默認設置就可以用它了
Eclipse 是一個開放源代碼的、基於Java的可擴展開發平台。就其本身而言,它只是一個框架和一組服務,用於通過插件組件構建開發環境。幸運的是,Eclipse 附帶了一個標準的插件集,包括Java開發工具(Java Development Kit,JDK)。
Ⅲ Javascript中call和apply的區別與詳解
每個JavaScript函數都會有很多附屬的(attached)方法,包括toString()、call()以及apply()。聽起來,你是否會感到奇怪,一個函數可能會有屬於它自己的方法,但是記住,JavaScript中的每個函數都是一個對象。看一下 這篇文章 ,復習一下(refresher)JavaScript特性。你可能還想知道JavaScript中函數和方法的區別。我認為「函數」和「方法」的描述,僅僅是JavaScript的習慣約定而已。函數立足於它們自己(例如:alert()),而方法是函數內部一個對象的屬性(dictionary),我們通過對象來調用方法。每個JavaScript對象都有一個toString()方法,下面通過代碼舉例說明,在一個函數對象中,我們可以使用toString()方法。
?
1
2
3
4
function foo(){
alert('x');
}
alert(foo.toString());
因為函數都是對象,它們有自己的屬性和方法。我們可以把它們看作數據(data)。這篇文章,我們只關注兩個函數的方法apply()以及call()。
我們從下面的代碼開始:
?
1
2
3
4
5
var x = 10;
function f(){
alert(this.x);
}
f();
我們定義了一個全局函數f()。f()通過this關鍵字訪問變數x,但是需要注意的是,我們不能通過一個對象的實例來調用這個函數。this指向的是什麼對象呢?this會指向這個全局對象。我們的變數x就是在這個全局對象中定義的。上面的代碼能夠正常運行,運行結果會顯示一個對話框,對話框中顯示10。
我們可以通過this來調用call()和apply()。正如下面的例子展示如何使用call():
?
1
2
3
4
5
6
7
var x = 10;
var o = { x : 15};
function f(){
alert(this.x);
}
f();
f.call(o);
首先調用f()將會顯示10的對話框,因為this這個時候指向的是全局對象。然後我們調用f函數的call()方法,傳入的參數是o,運行結果顯示的是o中x屬性的值15。call()方法會用它的第一個參數作為f函數的this指針。也就是說,我們會告訴運行時,f函數中的this指向的是哪個對象。
this跳轉聽起來有些滑稽,甚至對於C++、Java以及C#程序員來說有些反常。這些都是ECMAScript中有趣的部分。
通過call()也可以給函數傳遞參數:
?
1
2
3
4
5
6
7
var x = 10;
var o = { x : 15};
function f(){
alert(this.x);
}
f();
f.call(o);
apply()和call()類似的,只是apply()要求第二個參數必須是一個數組。這個數組會作為參數傳遞給目標函數。
?
1
2
3
4
5
6
7
8
var x = 10;
var o = {x : 15};
function f(message) {
alert(message);
alert(this.x);
}
f('invoking f');
f.apply(o, ['invoking f through apply']);
apply()方法是很有用的,因為我們可以創建一個函數而不用去關心目標方法的參數。這個函數可以通過apply()的第二個數組參數來傳遞額外的參數給方法。
?
1
2
3
4
5
6
7
8
9
10
11
12
var o = {x : 15};
function f1(message1) {
alert(message1 + this.x);
}
function f2(message1, message2) {
alert(message1 + (this.x * this.x) + message2);
}
function g(object, func, args) {
func.apply(object, args);
}
g(o, f1, ['the value of x = ']);
g(o, f2, ['the value of x squared = ', '. Wow!']);
這樣的語法有點問題。為了調用apply()方法,我們強制目標函數使用數組中的參數。幸運的是,有一個方法可以讓這種語法更簡單。在此之前,我們必須先介紹一個:參數標識符。
在JavaScript中,其實每個函數都有一個可變長度的參數列表。這意味著,即使一個函數只有一個參數的時候,我們也可以傳遞5個參數給它。下面的代碼不會有錯誤,而且結果顯示的是「H」。
?
1
2
3
4
function f(message) {
alert(message);
}
f('H', 'e', 'l', 'l', 'o');
在f()中,如果我們不想去接受其他的參數,我們可以用關鍵字arguments。arguments代表一個參數對象,它有一個代表長度的屬性類似於數組。
?
1
2
3
4
5
6
7
8
9
function f(message) {
// message的值和arguments[0]是一樣的
for(var i = 1; i < arguments.length; i++){
message += arguments[i];
}
alert(message);
}
// 結果顯示「Hello」
f('H', 'e', 'l', 'l', 'o');
你應該知道,嚴格來講,arguments不是一個數組。arguments有一個length屬性,但是沒有split、push、pop方法。在前面的g()函數中,我們可以從arguments中拷貝需要的參數,組成數組,然後把這個數組傳遞給apply()。
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var o = {x : 15};
function f(message1, message2) {
alert(message1 + ( this.x * this.x) + message2);
}
function g(object, func) {
// arguments[0] = object
// arguments[1] = func
var args = [];
for(var i = 2; i < arguments.length; i++) {
args.push(arguments[i]);
}
func.apply(object, args);
}
g(o, f, 'The value of x squared = ', '. Wow!');
當我們調用g(),we can pass additional arguments as parameters instead of stuffing the arguments into an array。
Ⅳ java中輸入點後自動彈出方法列表
1. 打開Eclipse,然後「window」→「Preferences」
2. 選擇「java」,展開,「Editor」,選擇「Content Assist」。
3. 選擇「Content Assist」,然後看到右邊,右邊的「Auto-Activation」下面的「Auto Activation triggers for java」這個選項。其實就是指觸發代碼提示的就是「.」這個符號.
4. 「Auto Activation triggers for java」這個選項,在「.」後加abc字母,方便後面的查找 修改。然後「apply」,點擊「OK」。
5. 然後,「File」→「Export」,在彈出的窗口中選擇「Perferences」,點擊「下一步」。
6. 選擇導出文件路徑,本人導出到桌面,輸入「test」作為文件名,點擊「保存」。
7. 在桌面找到剛在保存的文件「test.epf」,右鍵選擇「用記事本打開」。
8. 可以看到很多配置MyEclipse 6.0.1的信息
9. 按「ctrl + F」快捷鍵,輸入「.abc」,點擊「查找下一個」。
10. 查找到「.abc」的配置信息.
11. 把「.abc」改成「.abcdefghijklmnopqrstuvwxyz(,」,保存,關閉「test.epf」。
以後,當你輸入任意一個字母時,都會自動提示
Ⅳ java程序運行時總是出現Launch configuration ASTFrame references closed project...要怎麼改呀
1:單擊工具欄Run圖標右邊的下拉箭頭,選擇Run Configurations
Ⅵ JAVA閱讀源碼,大量英文注釋閱讀不方便,求集成idea裡面的翻譯java注釋由英文翻譯為中文的工具。
學會在idea(eclipse)中閱讀、調試源碼,是java程序員必不可少的一項技能。
在idea中配完環境後,默認其實也是能夠對jdk的源碼進行debug調試的。但是無法在源碼中添加自己的注釋,無法添加自己的理解。如果乾瞪眼看的話,可能過段時間,就忘記了。下面就介紹下,如何在jdk源碼中為所欲為,像在我們自己的代碼中一樣寫注釋、調代碼:
打開idea,選擇Project->File->Project Structure->SDKs->Sourcepath,初始狀態如下圖 :
這時,再重新打開jdk的源碼類,我們就可以在源java文件中,添加自己的注釋了。
一定注意:添加註釋時,一定不要新加一行寫注釋。最好在一行代碼的後面,使用//進行注釋。否則行號和真正的jre中編譯後的代碼行號對應不上,如果對源碼debug時,會出現代碼運行和行號不匹配的情況
Ⅶ java問題 急急急!!!
1、public class example implements Function<String,int>{
//Str為輸入的字元串
public int apply(String Str){
System.out.println(Str.length(););
return Str.length();
}
}
2、
Ⅷ 用mac搭建java框架需要注意什麼、學習什麼
1、安裝jdk:Mac系統自帶jdk,但是版本是1.6,比較老了,我們需要在官網下載最新的Java8,安裝比較簡單。
2、配置jdk環境變數:終端輸入 vim ~/.bash_profile 按回車,進入編輯模式後輸入以下內容:
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home
PATH=$JAVA_HOME/bin:$PATH:.
CLASSPATH=JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export JAVA_HOME
export PATH
export CLASSPATH
按esc :wq回車,保存退出後在終端輸入 source ~/.bash_profile 以使文件生效。
終端輸入java -version可以查看Java版本,whereis java可以查看Java位置,echo
$JAVA_HOME可以列印出JAVA_HOME。
3、安裝eclipse:下載完成後解壓,把.app文件拖進Application就可以了,然後創建一個workspace,也就是工作空間,存放代碼的地方。
4、eclipse配置jdk:打開eclipse,偏好設置,Java,installed,勾選1.8版本,apply,OK。
5、安裝tomcat:下載完成後解壓,把文件夾放在你想放的位置,打開eclipse,偏好設置,找到server,tomcat,add,選擇路徑,apply,OK。
6、下載maven:下載完成後解壓,放到想放的位置。
7、配置maven環境變數:終端輸入 vim ~/.bash_profile 按回車,進入編輯模式後添加以下內容:
M2_HOME=/Users/wangpeng/java/apache-maven-3.3.9
PATH=$JAVA_HOME/bin:$M2_HOME/bin:$PATH:.
export M2_HOME
按esc :wq回車,保存退出後在終端輸入 source ~/.bash_profile 以使文件生效。
終端輸入mvn -version或者mvn -v可以查看maven相關信息,echo $M2_HOME可以列印出M2_HOME。
8、eclipse配置maven:打開eclipse,偏好設置,找到maven,installations,add,選擇路徑,apply,OK。
9、資料庫的安裝之前已經寫過一篇博客了,這里不再重復,需要的話請自行查閱,傳送門:《Mac OS X 下Mysql的安裝、配置及卸載》
.bash_profile文件的最終版本如下:
# sql
alias mysql='/usr/local/mysql/bin/mysql'
alias mysqladmin='/usr/local/mysql/bin/mysqladmin'
# ls
alias ls='ls -G'
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home
M2_HOME=/Users/wangpeng/java/apache-maven-3.3.9
PATH=$JAVA_HOME/bin:$M2_HOME/bin:$PATH:.
CLASSPATH=JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export JAVA_HOME
export PATH
export CLASSPATH
export M2_HOME
Ⅸ java語義分析
public class VariableTypeResolver {
private final String symbol;
private final ASTNode minScope;
private boolean methodLevel = true;
private boolean typeLevel = true;
/**
* The found result
*/
private SimpleName declSN;
private final ASTVisitor visitor = new ASTVisitor() {
@Override
public boolean visit(SimpleName sn) {
if (found()) {
return false;
}
if (sn.getIdentifier().equals(symbol) && sn.getParent() instanceof VariableDeclaration) {
declSN = sn;
return false;
}
return true;
}
};
/**
* Starts resolving with the requested symbol
* @param varSymbolNode the variable symbol node to resolve (node must be in the AST)
*/
public VariableTypeResolver(SimpleName varSymbolNode) {
this.symbol = varSymbolNode.getIdentifier();
this.minScope = varSymbolNode;
}
public VariableTypeResolver(String varSymbol, ASTNode minScope) {
this.symbol = varSymbol;
this.minScope = minScope;
}
public VariableTypeResolver disableMethodLevel() {
methodLevel = false;
return this;
}
public VariableTypeResolver disableTypeLevel() {
typeLevel = false;
return this;
}
/**
* Node's parent is instance of {@link VariableDeclarationFragment} or {@link SingleVariableDeclaration}
* @return the SimpleName node of declaration
*/
public SimpleName resolveDeclSimpleName() {
if (!found()) {
resolve();
}
return declSN;
}
private void resolve() {
if(found()) {return;}
if (methodLevel) {
apply(FindUpper.methodScope(minScope));
}
if(found()) {return;}
if (typeLevel) {
AbstractTypeDeclaration typeScope = FindUpper.abstractTypeScope(minScope);
applyInFields(typeScope);
if(found()) {return;}
for (TypeDeclaration superClass : superClasses(typeScope)) {
if(found()) {return;}
applyInFields(superClass);
}
}
}
private boolean found() {
return declSN != null;
}
private void apply(ASTNode scope) {
if (scope == null) {
throw new NullPointerException();
}
scope.accept(visitor);
}
private void applyInFields(AbstractTypeDeclaration typeScope) {
for (Object bd : typeScope.bodyDeclarations()) {
if (bd instanceof FieldDeclaration) {
apply((ASTNode) bd);
}
}
}
private List<TypeDeclaration> superClasses(AbstractTypeDeclaration atd) {
if (atd instanceof TypeDeclaration) {
return AstUtils.superClasses((TypeDeclaration) atd);
}
else {
return Collections.EMPTY_LIST;
}
}
}
也是網上找的
Ⅹ apply 和load defaults
apply和loaddefaults的區別
apply:應用,比如設置了某些功能的改變,就可以applyRestoreDefaults:恢復默認,如果想把發動過的設置恢復默認設置就可以用它了Eclipse是一個開放源代碼的、基於Java的可擴展開發平台。就其本身而言,它只是一個框架和一組服務,用於通過插件組件構建開發環境。幸運的是,Eclipse附帶了一個標準的插件集,包括Java開發工具(JavaDevelopmentKit,JDK)。